gpt4 book ai didi

Python:将函数应用于 Pandas DataFrame 的每一行并返回 **新数据帧**

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:56 27 4
gpt4 key购买 nike

我正在尝试将函数应用于数据框的每一行。棘手的部分是该函数为每个处理的行返回一个新的数据帧。假设该数据框的列可以轻松地从处理后的行中导出。

最后的结果应该是所有这些数据帧(每个处理行 1 个)连接起来。我故意不提供示例代码,因为只要满足“棘手”部分,最简单的解决方案建议就可以了。

我花了几个小时尝试挖掘文档和 stackoverflow 以找到解决方案。像往常一样,pandas 文档除了最简单的操作之外缺乏实际的例子,我就是无法弄清楚。我还确保不会错过任何重复的问题。非常感谢。

最佳答案

目前尚不清楚您想要实现什么目标,但我怀疑您需要创建单独的数据框。

下面的示例展示了如何获取数据帧,将其子集到您感兴趣的列,将函数foo应用于其中一列,然后应用第二个函数bar 返回多个值。

df = pd.DataFrame({
'first_name': ['john', 'nancy', 'jolly'],
'last_name': ['smith', 'drew', 'rogers'],
'A': [1, 4, 7],
'B': [2, 5, 8],
'C': [3, 6, 9]
})

>>> df
first_name last_name A B C
0 john smith 1 2 3
1 nancy drew 4 5 6
2 jolly rogers 7 8 9

def foo(first_name):
return 2 if first_name.startswith('j') else 1

def bar(first_name):
return (2, 0) if first_name.startswith('j') else (1, 3)

columns_of_interest = ['first_name', 'A']

df_new = pd.concat([
df[columns_of_interest].assign(x=df.first_name.apply(foo)),
df.first_name.apply(bar).apply(pd.Series)], axis=1)

>>> df_new
first_name A x 0 1
0 john 1 2 2 0
1 nancy 4 1 1 3
2 jolly 7 2 2 0

关于Python:将函数应用于 Pandas DataFrame 的每一行并返回 **新数据帧**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44573962/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com