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。