我在数据框中有一个包含非连续日期的列。我需要按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'))
这是使用熊猫实现所需分组的一种方法吗?还是应该编写单独的逻辑?
答案 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'))