我正在尝试使用 apply 来避免iterrows()
函数中的迭代器:
然而,pandas 方法的记录很少,我找不到如何使用它的示例,除了蹩脚的.apply(sq.rt)
在文档中...没有关于如何使用参数等的示例...
不管怎样,这里有一个关于我尝试做的事情的玩具示例。
以我的理解apply
实际上会做同样的事iterrows()
,即迭代(如果 axis=0,则遍历行)。每次迭代时的输入x
函数的应该是迭代的行。然而,我不断收到的错误消息有点反驳了这个假设......
grid = np.random.rand(5,2)
df = pd.DataFrame(grid)
def multiply(x):
x[3]=x[0]*x[1]
df = df.apply(multiply, axis=0)
上面的示例返回一个空的 df。谁能解释一下我的误解吗?
import pandas as pd
import numpy as np
grid = np.random.rand(5,2)
df = pd.DataFrame(grid)
def multiply(x):
return x[0]*x[1]
df['multiply'] = df.apply(multiply, axis = 1)
print(df)
结果是:
0 1 multiply
0 0.550750 0.713054 0.392715
1 0.061949 0.661614 0.040987
2 0.472134 0.783479 0.369907
3 0.827371 0.277591 0.229670
4 0.961102 0.137510 0.132162
解释:
你的功能apply
ing,需要返回一个值。您还将其应用于每一行,而不是列。这axis您传递的参数在这方面不正确。
最后,请注意我将其设置为等于'multiply'
我的职能之外的列。您可以轻松地将其更改为df[3] = ...
就像你拥有并获得这样的数据框:
0 1 3
0 0.550750 0.713054 0.392715
1 0.061949 0.661614 0.040987
2 0.472134 0.783479 0.369907
3 0.827371 0.277591 0.229670
4 0.961102 0.137510 0.132162
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)