pandas 应用没有 lambda 参数的函数
pandas apply function with arguments no lambda
我正在尝试使用 apply args 参数将函数应用于数据框的行。我看到 multiple similar ,但遵循解决方案似乎不起作用。我创建了一个示例。
在这里,我将我的数据框除以其列的总和
pij=pd.DataFrame(np.random.randn(500,2))
pij.divide(pij.sum(1),axis=0).head()
0 1
0 1.077353 -0.690463
1 0.608302 0.583209
2 -0.724272 -1.665318
3 -0.735404 -0.606744
4 -0.033409 -0.162695
我知道如何使用 lambda 得到 return 相同的结果
def lambda_divide(row):
return row / row.sum(0)
pij.apply(lambda row: lambda_divide(row), axis=1).head()
0 1
0 1.077353 -0.690463
1 0.608302 0.583209
2 -0.724272 -1.665318
3 -0.735404 -0.606744
4 -0.033409 -0.162695
但是,当我尝试使用应用参数时,它不起作用
pij.apply(np.divide,args=(pij.sum(1)))
完整错误表明这是由于 pandas 特殊外壳 ufuncs:
4045
4046 if isinstance(f, np.ufunc):
-> 4047 results = f(self.values)
4048 return self._constructor(data=results, index=self.index,
4049 columns=self.columns, copy=False)
ValueError: invalid number of arguments
这看起来像是一个错误!
在这种特定情况下,您可以使用 div:
In [11]: df.div(df.sum(1), axis=0)
Out[11]:
0 1
0 2.784649 -1.784649
1 0.510530 0.489470
2 0.303095 0.696905
3 0.547931 0.452069
4 0.170364 0.829636
我正在尝试使用 apply args 参数将函数应用于数据框的行。我看到 multiple similar
在这里,我将我的数据框除以其列的总和
pij=pd.DataFrame(np.random.randn(500,2))
pij.divide(pij.sum(1),axis=0).head()
0 1
0 1.077353 -0.690463
1 0.608302 0.583209
2 -0.724272 -1.665318
3 -0.735404 -0.606744
4 -0.033409 -0.162695
我知道如何使用 lambda 得到 return 相同的结果
def lambda_divide(row):
return row / row.sum(0)
pij.apply(lambda row: lambda_divide(row), axis=1).head()
0 1
0 1.077353 -0.690463
1 0.608302 0.583209
2 -0.724272 -1.665318
3 -0.735404 -0.606744
4 -0.033409 -0.162695
但是,当我尝试使用应用参数时,它不起作用
pij.apply(np.divide,args=(pij.sum(1)))
完整错误表明这是由于 pandas 特殊外壳 ufuncs:
4045
4046 if isinstance(f, np.ufunc):
-> 4047 results = f(self.values)
4048 return self._constructor(data=results, index=self.index,
4049 columns=self.columns, copy=False)
ValueError: invalid number of arguments
这看起来像是一个错误!
在这种特定情况下,您可以使用 div:
In [11]: df.div(df.sum(1), axis=0)
Out[11]:
0 1
0 2.784649 -1.784649
1 0.510530 0.489470
2 0.303095 0.696905
3 0.547931 0.452069
4 0.170364 0.829636