根据另一个行值在熊猫中复制行值

时间:2020-03-09 20:35:37

标签: python pandas

我有以下DF:

target

如果“事件”值匹配,我想复制与特定“事件”值的行相对应的“日期”值(从非空白位置到空白位置)。因此,如果将“ Dance”与值“ 11/8/2011”相关联,则我希望所有“ Dance”在日期下都包含这些值,而不是空白。

我希望最终的DF看起来像这样:

df = pd.DataFrame({'Date' : ['11/8/2011', '11/9/2011', '11/10/2011', 
                                        '11/11/2011', '11/12/2011', '','','','',''], 
                'Event' : ['Dance', 'Painting', 'Bowling', 'Rugby', 'Running','Dance', 'Painting', 'Bowling', 'Rugby', 'Running']})

df

我尝试过:

    df = pd.DataFrame({'Date' : ['11/8/2011', '11/9/2011', '11/10/2011', 
                                        '11/11/2011', '11/12/2011', '11/8/2011', '11/9/2011', '11/10/2011','11/11/2011', '11/12/2011'], 
                'Event' : ['Dance', 'Painting', 'Bowling', 'Rugby', 'Running','Dance', 'Painting', 'Bowling', 'Rugby', 'Running']})

但是得到以下消息,而不是新的数据框:

DF_New = df.groupby(['Event'])

1 个答案:

答案 0 :(得分:2)

您可以执行groupby().ffill()

df['Date'] = (df.Date.where(df.Date.ne(''))
   .groupby(df.Event)
   .ffill()
)

输出:

         Date     Event
0   11/8/2011     Dance
1   11/9/2011  Painting
2  11/10/2011   Bowling
3  11/11/2011     Rugby
4  11/12/2011   Running
5   11/8/2011     Dance
6   11/9/2011  Painting
7  11/10/2011   Bowling
8  11/11/2011     Rugby
9  11/12/2011   Running