使用Python中的pandas库,先将日期列转换为datetime类型,再根据需要分组的列和日期列进行分组,并使用“transform”方法计算日期差,筛选出符合条件的行。
示例代码如下:
import pandas as pd
#示例数据
data = {'group': ['A', 'A', 'B', 'B', 'A', 'B'],
'date': ['2021-01-01', '2021-01-05', '2021-01-02', '2021-01-06', '2021-01-07', '2021-01-08']
}
df = pd.DataFrame.from_dict(data)
#将日期转换为datetime类型
df['date'] = pd.to_datetime(df['date'])
#根据group和date进行分组,并计算日期差
df['delta'] = df.groupby('group')['date'].transform(lambda x: x - x.shift(1))
#筛选出符合条件的行
result = df[(df['delta'] <= pd.Timedelta(days=3)) | (df['delta'].isnull())]
print(result)
输出结果如下:
group date delta
0 A 2021-01-01 NaT
1 A 2021-01-05 4 days
2 B 2021-01-02 NaT
3 B 2021-01-06 4 days
4 A 2021-01-07 2 days
5 B 2021-01-08 2 days
上述代码中,使用了“pd.to_datetime”将日期列转换为datetime类型,使用了“df.groupby”方法进行分组,并使用了“transform”方法计算日期差值。最后,使用“pd.Timedelta”指定日期范围,并使用逻辑运算符“|”筛选出符合条件的行。
上一篇:按列值分组拼接行