根据其他行添加行

时间:2017-09-19 20:48:20

标签: python-3.x pandas duplicates

我的DataFrame对象与此类似:

        Product StoreFrom   StoreTo Date
1   out melon   StoreQ  StoreP  20170602
2   out cherry  StoreW  StoreO  20170614
3   out Apple   StoreE  StoreU  20170802
4   in  Apple   StoreE  StoreU  20170812

我想避免重复,在第3和第4行显示相同的动作。我试图达到

        Product StoreFrom   StoreTo Date    Days
1   out melon   StoreQ  StoreP  20170602    
2   out cherry  StoreW  StoreO  20170614    
5   in  Apple   StoreE  StoreU  20170812    10

我获得了超过10,000的参赛资格。我找不到类似的工作。任何帮助都非常有用。

1 个答案:

答案 0 :(得分:1)

d1 = df.assign(Date=pd.to_datetime(df.Date.astype(str)))
d2 = d1.assign(Days=d1.groupby(cols).Date.apply(lambda x: x - x.iloc[0]))
d2.drop_duplicates(cols, 'last')

    io Product StoreFrom StoreTo       Date    Days
1  out   melon    StoreQ  StoreP 2017-06-02  0 days
2  out  cherry    StoreW  StoreO 2017-06-14  0 days
4   in   Apple    StoreE  StoreU 2017-08-12 10 days