我有一个包含数百列和数千行的 pandas df。 以下是我们感兴趣的 3 列:
ID | 开始日期 | endDate |
---|---|---|
123 | 2020-01-01 | 2020-01-25 |
123 | 2020-01-26 | 2020-02-08 |
123 | 2020-02-09 | 2020-03-12 |
我希望每一行都具有相同的 ID,如果日期彼此跟随,则合并行,并保持所有其他列不变。
对于我们的示例,输出将是单行,因为日期如下:
ID | 开始日期 | endDate |
---|---|---|
123 | 2020-01-01 | 2020-03-12 |
你知道如何用 pandas 做到这一点吗?
最佳答案
如果日期时间未排序或不确定,请使用 min
和 max
进行聚合:
df.groupby('ID', as_index=False).agg({'startDate': 'min', 'endDate': 'max'})
如果有很多其他列并且只需要聚合 2 列:
df['startDate'] = df.groupby('ID')['startDate'].transform('min')
df['endDate'] = df.groupby('ID')['endDate'].transform('max')
df = df.drop_duplicates('ID')
关于python - 根据日期范围合并行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69115428/