将CSV fi的每列相加

2024-04-23 23:47:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大的CSV文件,有32个列标题。我想对每个列进行汇总,结果是每个列标题的32个单独的总和。我可以访问python和powershell。如有任何帮助,将不胜感激。在

最远的是这个网站:pandas groupby with sum() on large csv file?


Tags: 文件csv标题pandas网站onwithfile
3条回答
import pandas as pd
pd.read_csv(r'my_path_to_file/my_file.csv', sep=';').sum().values

熊猫无疑是最好的选择。这两行代码将打印出列的总和。如果您在windows上,请使用“\”来指定路径。我假设您的csv文件使用分号作为分隔符(如果是逗号,则使用sep=','如果是制表符,则使用sep='\t')

如果要将结果写入文件,请使用:

^{pr2}$

您可以在pandas中使用read_csv来读取文件,然后在dataframe上只使用sum()。在

import pandas as pd

filename = r'folder/file.txt'
df = pd.read_csv(filename)
total = df.sum()

仅在此示例数据文件上使用内置函数的简单方法:

#! /usr/bin/env python
from __future__ import print_function

sep = ';'
with open('32_numeric_columns.csv', 'rt') as f:
    columns = f.readline().strip().split(sep)
    rows = [0] * len(columns)
    for line in f.readlines():
        data = line.strip().split(sep)
        for i, cell in enumerate(data, start=0):
            rows[i] += float(cell)


print(columns)
print(rows)

在此数据文件中:

^{pr2}$

产量:

['a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'd0', 'd1']
[10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0]

在我的机器上处理一个包含1280000000字节数据的巨大文件需要大约5分钟才能生成:

$> time ./so_csv_adder.py
['a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'd0', 'd1']
[20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0, 20000000.0]

real    4m47.374s
user    4m43.748s
sys 0m2.545s

相关问题 更多 >