我已经读过很多次,在数据帧中应该避免迭代,所以我一直在尝试“更好的方法”,例如应用函数,但我遇到了以下错误:
The truth value of a Series is ambiguous
我需要在各个行项目上运行迭代计算并获取更新的值。这是一个简化的示例,但实际情况包含大量数学知识,因此为什么首选函数:
df = pd.DataFrame({'A':[10,20,30,40], 'B':[4,3,2,1]})
def match_col(A,B):
while A != B:
B = B + 1
df.apply(lambda x: match_col(df['A'],df['B']),axis=1)
基本上,我需要每一行使用多个项目,运行迭代计算,并输出新的/更新的项目。我哪里逻辑错了?
最佳答案
而是这样做:
df.apply(lambda x: match_col(x['A'],x['B']),axis=1)
因为您要在每一行上应用该函数,所以该行的值需要传递给 match_col
而不是整个系列,例如df['A']
。
您还需要从函数中返回
一些内容:
def match_col(A,B):
while A != B:
B = B + 1
return B
然后你会得到这样的结果:
In [10]: df.apply(lambda x: match_col(x['A'],x['B']),axis=1)
Out[10]:
0 10
1 20
2 30
3 40
dtype: int64
关于python - 对 pandas 数据框项的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59997079/