我可以传递一个返回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
答案 0 :(得分:3)
您可以传递一个函数来应用,但它不应该返回一个字典。如果您想以自己的方式添加总和列 - 请执行以下操作:
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)