繁体   English   中英

当返回dict时,DataFrame.apply(func)不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM