熊猫:如何对非连续日期列进行分组?

时间:2018-07-06 18:47:49

标签: python pandas datetime

我在数据框中有一个包含非连续日期的列。我需要按2天的频率对这些日期进行分组。数据样本(归一化后):

2015-04-18 00:00:00    
2015-04-20 00:00:00    
2015-04-20 00:00:00    
2015-04-21 00:00:00    
2015-04-27 00:00:00    
2015-04-30 00:00:00    
2015-05-07 00:00:00    
2015-05-08 00:00:00

我尝试了以下操作,但由于日期不连续,因此无法获得理想的结果。

df.groupby(pd.Grouper(key = 'l_date', freq='2D'))

这是使用熊猫实现所需分组的一种方法吗?还是应该编写单独的逻辑?

1 个答案:

答案 0 :(得分:1)

一旦您拥有l_date排序的数据框。您可以创建连续 虚拟日期 dum_date)列并按2D 频率

df = df.sort_values(by='l_date')
df['dum_date'] = pd.date_range(pd.datetime.today(), periods=df.shape[0]).tolist()

df.groupby(pd.Grouper(key = 'dum_date', freq='2D'))

OR

如果您适合除日期以外的分组。那么将n 连续行分组的通用方法可能是:

n = 2                                                      # n = 2 for your use case
df = df.sort_values(by='l_date')
df['grouping'] = [(i//n + 1) for i in range(df.shape[0])]

df.groupby(pd.Grouper(key = 'grouping'))