我一直在尝试修复此语法,但是没有运气。如果有人可以帮助我,我将不胜感激。
1 vat.loc[(vat['Sum of VAT'].isnull()) &
2 (vat['Sum of VAT'] == 0) &
3 (vat['Comment'] == 'Transactions 0DKK') &
4 (vat['Memo (Main)'] != '- None -'), 'Comment'] = 'Travel bill'
5 vat[vat["Comment"] == "Travel bill"]
问题出在第一和第二行。我得到一个空的数据帧作为输出,这是因为同一列中的空值和零(0)值的过滤器不会同时发生。有没有更好的方法来组合第1行和第2行,以便获得所需的输出。如果我删除第一行或第二行,我会得到一个输出,但这不是理想的输出。我尝试使用isin()方法,但对我100%无效。否则,整个代码将完美运行,但是如何连接第一行和第二行?谢谢!
答案 0 :(得分:1)
有两种方法可以解决此问题:
a)您可以将NaN替换为零,然后可以进一步过滤NULL
值。所以我的意思是说,做类似的事情
vat['Sum of VAT'] = vat['Sum of VAT'].replace(0, np.nan)
1 vat.loc[(vat['Sum of VAT'].isnull()) &
3 (vat['Comment'] == 'Transactions 0DKK') &
4 (vat['Memo (Main)'] != '- None -'), 'Comment'] = 'Travel bill'
b)或者,您可以简单地使用isin
方法:
1 vat.loc[(vat['Sum of VAT'].isin(0, np.nan)) &
3 (vat['Comment'] == 'Transactions 0DKK') &
4 (vat['Memo (Main)'] != '- None -'), 'Comment'] = 'Travel bill'
通过使用以上两个方法中的任何一个,您都可以从代码中忽略L#2。
答案 1 :(得分:0)
数据帧为空的原因确实是前两个条件,列Sum of VAT
不能同时为null和0,因此应将&
条件替换为{{1} }--
|
或
将vat.loc[((vat['Sum of VAT'].isnull()) | (vat['Sum of VAT'] == 0)) &
(vat['Comment'] == 'Transactions 0DKK') &
(vat['Memo (Main)'] != '- None -'), 'Comment'] = 'Travel bill'
用作-
isin