如何根据日期范围合并Pandas Dataframe中的行

时间:2018-04-19 11:00:59

标签: python python-3.x pandas pandas-groupby

我有一个DataFrame,它有两列日期和字符串值如下:

    date        Name     Cost        
0  2010-09-15  ABC XYZ   100
1  2010-09-16  PQR RTS    30
2  2010-09-17  DEF GHI    20
3  2010-09-18  LKJ POD    80
4  2010-09-19  WER HDF    10
5  2010-09-20  WFG MNB    30

我希望将日期为3天的行合并如下:

    date        Name                    Cost        
0  2010-09-15  ABC XYZ PQR RTS DEF GHI   50
1  2010-09-18  LKJ POD WER HDF WFG MNB   40

Cost列取平均值,字符串只是作为字符串添加。我尝试在不同的DataFrame中创建日期范围,然后与条件合并,但我没有获得所需的值。

1 个答案:

答案 0 :(得分:5)

将日期列转换为resample后,您可以在3天内使用datetime功能。

df.set_index('date', inplace=True)
df.index = pd.to_datetime(df.index)

df = df.resample('3D', kind='period', convention='start').agg(\
{'Name': lambda x: ' '.join(x), 'Cost' : 'mean'})

<强>输出

df
Out[35]: 
                               Name  Cost
date                                     
2010-09-15  ABC XYZ PQR RTS DEF GHI    50
2010-09-18  LKJ POD WER HDF WFG MNB    40