Python DataFrame.apply(func)不';返回时不工作

Python DataFrame.apply(func)不';返回时不工作,python,pandas,Python,Pandas,我是否可以将返回dict的函数传递给数据帧。应用 我正在尝试在df中创建一个新列,该列将包含dict对象或Series。然而,当我尝试时,我得到了意想不到的结果: [1]中的:将熊猫作为pd导入 [2]中的df=pd.DataFrame({'a':[1,2,3,4],'b':[9,8,7,6]}) 在[3]中:def df_加法(行): …:总和=行['a']+行['b'] …:返回{'sum':sum} ...: [4]中:df.apply(df_加法,轴=1) 出[4]: a b 0楠楠楠

我是否可以将返回
dict
的函数传递给
数据帧。应用

我正在尝试在
df
中创建一个新列,该列将包含
dict
对象或
Series
。然而,当我尝试时,我得到了意想不到的结果:

[1]中的
:将熊猫作为pd导入
[2]中的df=pd.DataFrame({'a':[1,2,3,4],'b':[9,8,7,6]})
在[3]中:def df_加法(行):
…:总和=行['a']+行['b']
…:返回{'sum':sum}
...:
[4]中:df.apply(df_加法,轴=1)
出[4]:
a b
0楠楠楠
1楠楠楠
2楠楠楠
3楠楠楠
[5]中:df_加法(df.irow(0))
Out[5]:{'sum':10}
[6]中:df.apply(lambda行:pd.Series(df_加法(行)),轴=1)
出[6]:
总和
0   10
1   10
2   10
3   10

您可以传递一个要应用的函数,但它不应返回dict。如果您想按自己的方式添加一个sum列,请按如下方式操作:

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


您可以传递一个要应用的函数,但它不应返回dict。如果您想按自己的方式添加一个sum列,请按以下方式操作:

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


您可以传递一个要应用的函数,但它不应返回dict。如果您想按自己的方式添加一个sum列,请按以下方式操作:

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


您可以传递一个要应用的函数,但它不应返回dict。如果您想按自己的方式添加一个sum列,请按以下方式操作:

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



谢谢你的快速回答!我现在澄清了这个问题,以强调我特别想要一列
dict
Series
对象;不仅仅是一个总和。@bornio:虽然有时可以强制它作为临时度量,但在数据帧中,
pandas
并不真正支持非标量项。一旦你这样做了,你将不得不进行缓慢的迭代来执行大多数操作。有没有一种有效的方法来在
pandas
中存储复杂的信息,而不使用几十列?@bornio pandas用于列。如果你想要别的东西,不要用熊猫。谢谢你的快速回答!我现在澄清了这个问题,以强调我特别想要一列
dict
Series
对象;不仅仅是一个总和。@bornio:虽然有时可以强制它作为临时度量,但在数据帧中,
pandas
并不真正支持非标量项。一旦你这样做了,你将不得不进行缓慢的迭代来执行大多数操作。有没有一种有效的方法来在
pandas
中存储复杂的信息,而不使用几十列?@bornio pandas用于列。如果你想要别的东西,不要用熊猫。谢谢你的快速回答!我现在澄清了这个问题,以强调我特别想要一列
dict
Series
对象;不仅仅是一个总和。@bornio:虽然有时可以强制它作为临时度量,但在数据帧中,
pandas
并不真正支持非标量项。一旦你这样做了,你将不得不进行缓慢的迭代来执行大多数操作。有没有一种有效的方法来在
pandas
中存储复杂的信息,而不使用几十列?@bornio pandas用于列。如果你想要别的东西,不要用熊猫。谢谢你的快速回答!我现在澄清了这个问题,以强调我特别想要一列
dict
Series
对象;不仅仅是一个总和。@bornio:虽然有时可以强制它作为临时度量,但在数据帧中,
pandas
并不真正支持非标量项。一旦你这样做了,你将不得不进行缓慢的迭代来执行大多数操作。有没有一种有效的方法来在
pandas
中存储复杂的信息,而不使用几十列?@bornio pandas用于列。如果您需要其他内容,请不要使用pandas。在[26]:df.apply(lambda row:pd.series(df_addition(row)),axis=1)[sum']中既没有dict列也没有series列:
。dtype Out[26]:dtype('int64')
。在[26]:df.apply(lambda row:pd.series(df_addition(row)),axis=1)[sum']。dtype Out[26]:dtype('int64'),您没有dict列,也没有series列:
。在[26]:df.apply(lambda row:pd.series(df_addition(row)),axis=1)[sum']。dtype Out[26]:dtype('int64')
,您没有dict列,也没有series列:
。在[26]:df.apply(lambda row:pd.series(df_addition(row)),axis=1)[sum']。dtype Out[26]:dtype('int64')
,您没有dict列,也没有series列:
。您有一列
int
s。