我有一些发票号码缺失的客户交易数据。如果两行中的客户id相等且交易金额相等,我想用前一行的值填充缺少的发票号。日期并不重要
数据外观的一个示例是:
date customer amount invoice
01/13 A 10 1
02/13 B 20 2
03/13 B 20 NA
04/13 C 30 3
05/13 C 60 NA
06/13 D 50 4
我想创造的是:
date customer amount invoice
01/13 A 10 1
02/13 B 20 2
03/13 B 20 2
04/13 C 30 3
05/13 C 60 NA - this NA remains because amount does not match
06/13 D 50 4
更新:感谢@David Erickson的评论,为ffill添加一个特定的专栏
您可以使用
groupby
和ffill
Emma的答案是这里的解决方案:(
df['invoice'] = df.groupby(['customer', 'amount'])['invoice'].ffill()
)但是,如果您在使用
groupby
可以做的事情之外有一些条件,那么下面的答案可能很有用,因此我将保留您可以将
ffill()
与mask
语句一起使用,以有条件地填充:相关问题 更多 >
编程相关推荐