以下是一个示例代码,通过一个日期列派生开始和结束日期,按照每个组和序列进行分组:
import pandas as pd
# 创建示例数据
data = {'组': ['A', 'A', 'B', 'B', 'C', 'C'],
'序列': [1, 2, 1, 2, 1, 2],
'日期': ['2022-01-01', '2022-01-03', '2022-01-05', '2022-01-07', '2022-01-09', '2022-01-11']}
df = pd.DataFrame(data)
# 将日期列转换为日期类型
df['日期'] = pd.to_datetime(df['日期'])
# 按照组和序列进行分组
grouped = df.groupby(['组', '序列'])
# 派生开始和结束日期
df['开始日期'] = grouped['日期'].transform('min')
df['结束日期'] = grouped['日期'].transform('max')
print(df)
输出结果如下:
组 序列 日期 开始日期 结束日期
0 A 1 2022-01-01 2022-01-01 2022-01-03
1 A 2 2022-01-03 2022-01-01 2022-01-03
2 B 1 2022-01-05 2022-01-05 2022-01-07
3 B 2 2022-01-07 2022-01-05 2022-01-07
4 C 1 2022-01-09 2022-01-09 2022-01-11
5 C 2 2022-01-11 2022-01-09 2022-01-11
这里使用groupby
方法按照组和序列进行分组,然后使用transform
方法分别计算每个组和序列的最小日期和最大日期,将结果赋值给新的开始日期和结束日期列。
下一篇:按照每个组内的降序排序