python - 根据日期范围合并行
问题描述
我有一个带有数百列和数千行的 pandas df。以下是我们感兴趣的 3 列:
ID | 开始日期 | 结束日期 |
---|---|---|
123 | 2020-01-01 | 2020-01-25 |
123 | 2020-01-26 | 2020-02-08 |
123 | 2020-02-09 | 2020-03-12 |
我希望每一行具有相同的 ID,如果日期彼此跟随,则合并行,并保持所有其他列不变。
对于我们的示例,输出将是单行,因为日期如下:
ID | 开始日期 | 结束日期 |
---|---|---|
123 | 2020-01-01 | 2020-03-12 |
你知道如何用熊猫来做这件事吗?
解决方案
如果日期时间未排序或不确定使用min
andmax
进行聚合:
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')
推荐阅读
- firebase - 颤振提供者 Firebase Firestore 文档值
- c++ - 如何在 C++ 中的列表向量中将元素插入到 alist 中?
- php - 为什么我在尝试打开 https://localhost:8000 时出现错误
- node.js - 从 1 个集群中重新加载所有 pm2 集群
- clang - 如何使用 opt 打印循环信息?
- python-3.x - Filedialog 和 Tkinter 在终端上创建空行
- sql - 如何避免在不使用临时表的情况下频繁查询相同的字段?
- matlab - 在 Matlab 中为 YOLO v3 示例创建格式正确的表格?
- spring - docker容器之间的通信不起作用[Spring Boot]
- c# - 解密 XML OKTA Saml 2.0