如何用Python对CSV数据每N行列分组求和并生成新结果
CSV数据按每5行分组列求和实现方案
需求说明
我有一个包含100多行数据的CSV文件,数据示例如下:
| A | B | C | D | E | F | H |
|---|---|---|---|---|---|---|
| 0 | 9 | 0 | 9 | 0 | 9 | 0 |
| 0 | 9 | 0 | 0 | 0 | 9 | 0 |
| 0 | 0 | 0 | 0 | 0 | 9 | 0 |
| 0 | 0 | 0 | 0 | 0 | 9 | 0 |
| 0 | 0 | 0 | 0 | 0 | 9 | 0 |
| 0 | 9 | 0 | 9 | 0 | 9 | 0 |
| 0 | 9 | 0 | 0 | 0 | 9 | 0 |
| 0 | 0 | 0 | 0 | 0 | 9 | 0 |
| 0 | 0 | 0 | 0 | 0 | 9 | 0 |
| 0 | 0 | 0 | 0 | 0 | 9 | 0 |
需要对每一列按**每5个单元格(即每5行)**进行求和,生成新的结果表。仅针对前三列、N=5的示例结果如下:
| J | K | L |
|---|---|---|
| 0 | 18 | 0 |
| 0 | 18 | 0 |
现有代码片段:
import pandas as pd df = pd.read_csv(filename) df[df.columns[4:]].sum()
解决方案
使用Pandas的分组功能可以高效实现需求,完整代码如下:
import pandas as pd # 读取目标CSV文件 df = pd.read_csv("your_file.csv") # 定义分组大小为5 group_size = 5 # 按每5行分组,对所有列求和 sum_result = df.groupby(df.index // group_size).sum() # 可选:重命名结果列(匹配示例中的J/K/L命名规则) sum_result.columns = [chr(ord('J') + idx) for idx in range(len(sum_result.columns))] # 查看结果或保存到新CSV文件 print(sum_result) sum_result.to_csv("sum_output.csv", index=False)
代码说明
df.index // group_size:通过整数除法将索引分组,前5行索引0-4会被分到组0,接下来5行5-9分到组1,以此类推。groupby(...).sum():对每个分组内的所有列执行求和操作,直接得到每组的汇总结果。- 列名重命名为可选步骤,若不需要修改列名,可删除该代码行,保留原CSV的列名即可。
内容的提问来源于stack exchange,提问作者FTh
相关产品推荐
相关产品推荐

