如何重构pandas DataFrame结构将行日期值转为开始及结束日期列
你可以通过pandas的分组聚合功能实现该转换,具体操作如下:
- 先将
Date列转换为日期类型,避免字符串排序出现异常 - 按
ID和number字段分组,分别取日期的最小值作为开始日期、最大值作为结束日期
示例代码:
import pandas as pd # 你的原始DataFrame df = pd.DataFrame({'Date': ['2020-01-01', '2020-10-01', '2021-01-01', '2021-10-01'], 'ID': [101, 101, 102, 102], 'number': [10, 10, 11, 11]}) # 转换日期列格式 df['Date'] = pd.to_datetime(df['Date']) # 分组聚合得到目标结构 res = df.groupby(['ID', 'number'], as_index=False).agg( **{'Start Date': ('Date', 'min'), 'End Date': ('Date', 'max')} ) # 调整列顺序匹配需求 res = res[['Start Date', 'End Date', 'ID', 'number']]
运行后得到的res就是你需要的格式。如果实际业务中同一ID和number组合下存在多条日期记录,该方法也会自动取最早和最晚日期作为起止时间,适配性更强。
内容的提问来源于stack exchange,提问作者Rocco
相关产品推荐
相关产品推荐

