python - 如何遍历数据框,添加 3 个特定行,用它们的总和替换这 3 行,然后每 57 行重复一次?
问题描述
我有这个数据框:
2020/01/02 2020/02/01 2020/03/01
0 | 10 10 10
1 | 10 10 10
2 | 10 10 10
.......................................
57 | 20 20 20
58 | 20 20 20
59 | 20 20 20
.......................................
114 | 30 30 30
115 | 30 30 30
116 | 30 30 30
我想将第 0、1 和 2 行相加,然后用它们的总和替换第 0、1 和 2 行,这样我的新数据框将如下所示:
2020/01/02 2020/02/01 2020/03/01
0 | 30 30 30
.......................................
57 | 20 20 20
58 | 20 20 20
59 | 20 20 20
.......................................
114 | 30 30 30
115 | 30 30 30
116 | 30 30 30
然后我想遍历数据框并每 57 行添加 3 行连续的行,然后用它们的总和替换这 3 行,这样我的结果数据框将如下所示:
2020/01/02 2020/02/01 2020/03/01
0 | 30 30 30
.......................................
57 | 60 60 60
.......................................
114 | 90 90 90
我该怎么做呢?
解决方案
您可以按行过滤每 3 个连续值57
,然后按每sum
3 行聚合:
np.random.seed(123)
N = 200
df = pd.DataFrame(np.random.choice([3,4,6], size=(N, 3)))
a = np.arange(len(df))
df.index = a // 57
df = df[a % 57 < 3]
df = df.groupby(level=0).sum()
print (df)
0 1 2
0 18 11 18
1 12 13 18
2 13 13 16
3 10 14 15
推荐阅读
- python - 如何通过 Selenium 和 python 点击带有 find_element_by_* 的链接
- python - 将 PyTorch 张量转换为 python 列表
- javascript - 为什么道具变量不能被破坏?
- swift - UITextField 必须有最少的字符才能激活 UIButton
- javascript - 循环后返回对象数组的值
- java - ListView 重叠折叠工具栏
- r - 尝试用特定年份填充缺失的数据并按顺序填充。
- hadoop - Hadoop 3.1.1 仅显示一个活动数据节点
- node.js - 如何使用 Node express 读取文本文件并将其写入 HTML 标签?
- html - 在 Github 上创建网页