根据分组的列值填充先前字段

时间:2020-07-03 09:14:16

标签: python pandas

我有一个像这样的数据集

enter image description here

我想将desc和value的值上移一个级别,以便它们与相应的Number和Shipment Date值在同一行上开始。此移动将基于以下相应的编号和发货日期组:

enter image description here

我认为熊猫ffill()和transform将是主要工具。因此,我正在尝试以下操作:

df1=df.copy()

df1[['number', 'shipment_date']]=df1[['number', 'shipment_date']].ffill()
df1.desc=df1.desc.fillna('')
df1.amount= df1.amount.fillna('')

s= df1.groupby(['number', 'shipment_date']).amount.transform(lambda x: ' '.join(str(x)))

df.loc[df.shipment_date.notnull(),'amount']=s
df.loc[df.shipment_date.isnull(),'amount']=''

问题是金额是浮动的,即使覆盖了str并尝试如上所述加入,它也会给出错误。

如果我对desc col进行同样的操作,它将把number和shipment_date下的所有行连接在一起,并将它们合并到同一行中,而不是向上拉。

1 个答案:

答案 0 :(得分:0)

我相信您需要选择列,然后选择DataFrame.shift

cols = ['desc', 'amount']
df[cols] = df[cols].shift(-1)