【发布时间】:2017-09-14 10:59:20
【问题描述】:
我有两个数据框:df1 和 df2。
df1包含每日数据,有4列:date、id、value1、value2;
df2 包含某个 id 发生某些事件的日期;它有两列:日期和 ID。
df2 是 df1 中日期和 id 列的子集
对于 df2 中的每一行,我想在 df1 中找到具有相同日期和 id 的行,并获取该 id 从 date-1 到 date+1 的行,取平均值并替换前三行.
例如,如果我有来自 df2 的 date = 3 和 id = A,我想在 (2, 3, 4) 和 df1 中找到 id = A 的行,取这些行的平均值并替换这三行加上结果一行。
df1:
index date id value1 value2
0 1 A 0.1 0.2
1 2 A 0.2 0.3
2 3 A 0.3 0.4
3 4 A 0.4 0.5
4 5 A 0.5 0.6
5 1 B 0.1 0.2
6 2 B 0.2 0.3
7 3 B 0.3 0.4
8 4 B 0.4 0.5
9 5 B 0.5 0.6
df2
index date id
0 3 A
1 3 B
想要的输出
index date id value1 value2
0 1 A 0.1 0.2
1 3 A 0.3 0.4
2 5 A 0.5 0.6
3 1 B 0.1 0.2
4 3 B 0.3 0.4
5 5 B 0.5 0.6
【问题讨论】:
-
您自己在拼写解决方案:“我想在 (2, 3, 4) 中查找日期为 df1 中的 id = A 的行”......再加上其余的你的细节,你的尝试是什么样的?您已经分解了问题,现在如何将其转换为代码?考虑过滤和使用
pandas.Series.isin...
标签: python pandas time-series