python - 按日期时间合并行数据
问题描述
我有一个数据框,其中的数据如下所示:
ds Name Up Down
2021-03-01 02:55:00 name1 14094 13384
2021-03-01 03:00:00 name1 16124 18283
2021-03-01 03:05:00 name1 20838 23124
2021-03-01 02:55:00 name2 15094 33384
2021-03-01 03:00:00 name2 16174 48283
2021-03-01 03:05:00 name2 30838 63124
所以我有一个名称不同的列,但它们可以有相同的日期时间。
我想做的是将具有相同日期的行合并到一个新的数据框或类似的东西中,但是向上/向下值加在一起,即结果数据框应该是这样的:
ds Name Up Down
2021-03-01 02:55:00 name1+name2 29188 46768
2021-03-01 03:00:00 name1+name2 32298 66569
2021-03-01 03:05:00 name1+name2 51676 86248
列的命名约定Name
我并没有真正考虑过。我不认为那是那么重要。
解决方案
这是一个直截了当groupby().agg()
import io
df = pd.read_csv(io.StringIO("""ds Name Up Down
2021-03-01 02:55:00 name1 14094 13384
2021-03-01 03:00:00 name1 16124 18283
2021-03-01 03:05:00 name1 20838 23124
2021-03-01 02:55:00 name2 15094 33384
2021-03-01 03:00:00 name2 16174 48283
2021-03-01 03:05:00 name2 30838 63124"""), sep="\s\s+", engine="python")
df["ds"] = pd.to_datetime(df["ds"])
df.groupby("ds", as_index=False).agg({"Name":lambda s: "+".join(list(s)), "Up":"sum","Down":"sum"})
ds | 姓名 | 向上 | 向下 | |
---|---|---|---|---|
0 | 2021-03-01 02:55:00 | 姓名1+姓名2 | 29188 | 46768 |
1 | 2021-03-01 03:00:00 | 姓名1+姓名2 | 32298 | 66566 |
2 | 2021-03-01 03:05:00 | 姓名1+姓名2 | 51676 | 86248 |
推荐阅读
- c - 如何将字符从文件传递到指针
- java - 何时使用 XA 数据源和非 XA 数据源
- python - TypeError:只有大小为 1 的数组可以转换为 Python 标量 - 地球观测
- python - 根据标签位置计算 Pandas DataFrame 的索引
- python-3.x - Python os.remove() 被缓冲并在稍后执行
- python - 将数据类型写入 CSV
- symfony - 将 Symfony 4 应用程序部署到 Google App Engine 时出现安全检查器错误
- c++11 - 基于#define变量类型的条件编译
- vue.js - VueJS 在两个页面之间传递数据
- python-3.x - Numpy 点积返回 [inf] 数组