我在lambda函数中得到这个错误:The truth value of a Series is ambiguous
。我知道这里有一个关于这个错误的非常全面的解释,但我不认为这与我的问题有关:
Truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
基本上,我试图通过lambda来确定在同一AccountID中,从一个月到下一个月,OpenBal
是否相同,如果相同,则给我一个“1”(例如下面的OpenBal=101)。很明显,第一张唱片应该给我一个NaN。(请注意,感谢@jdehesa在我的另一篇文章中给出的答案)。在
这说明了我的问题:
import pandas as pd
df = pd.DataFrame({'AccountID': [1,1,1,1,2,2,2,2,2],
'RefMonth': [1,2,3,4,1,2,3,4,5],
'OpenBal': [100,101,101,103,200,201,202,203,204]})
SameBal = df.groupby('AccountID').apply(lambda g: 1 if g['OpenBal'].diff() == 0 else 0)
df['SameBal'] = SameBal.sortlevel(1).values
你的错误正确地表明你不能检查序列的真实性。但是自定义匿名函数对于这个任务不是必需的。在
将
groupby
+transform
与pd.Series.diff
一起使用:如果每个组的第一行需要
^{pr2}$NaN
:1 if g['OpenBal'].diff() == 0
不工作。这不是pd.Series()
对象的操作方式您需要创建一个合适的方法:
这将解决
^{pr2}$The truth value of a Series is ambiguous
错误相关问题 更多 >
编程相关推荐