[英]DataFrame.apply(func) doesn't work when return is dict
我可以传递一个将dict
返回给DataFrame.apply
吗?
我正在尝试在df
创建一个新列,该列将具有dict
对象或Series
。 但是,当我尝试它时,却得到了意外的结果:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'a':[1,2,3,4], 'b':[9,8,7,6]})
In [3]: def df_addition(row):
...: sum = row['a'] + row['b']
...: return {'sum': sum}
...:
In [4]: df.apply(df_addition, axis=1)
Out[4]:
a b
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN
In [5]: df_addition(df.irow(0))
Out[5]: {'sum': 10}
In [6]: df.apply(lambda row: pd.Series(df_addition(row)), axis=1)
Out[6]:
sum
0 10
1 10
2 10
3 10
您可以传递要应用的函数,但不应返回字典。 如果您想以自己的方式添加总和列, 请按照以下步骤操作:
df = pd.DataFrame({'a':[1,2,3,4], 'b':[9,8,7,6]})
df['sum'] = df.apply(lambda x: x['a'] + x['b'], axis = 1)
df
Out[6]:
a b sum
0 1 9 10
1 2 8 10
2 3 7 10
3 4 6 10
一种更简单的方法是:
df['sum'] = df.a + df.b
要么
df['sum'] = df.sum(1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.