如何计算一个巨大的 CSV 文件中两个命名列之间的差异,然后将结果保存到第二个 CSV 文件中?

问题描述 投票:0回答:1

我有一个包含近 2 亿行(GB 数据)的 CSV 文件。它只有 5 列。我想迭代数据并进行简单的计算,首先在列之间,然后在行之间。

样本数据:

DateTime,Width,Length,Count,Age
01.01.2010 00:00:00,0.55,0.25,1,4
07.02.2010 00:00:01,0.53,0.28,2,3
21.02.2010 00:00:01,0.55,0.25,2,3
20.03.2010 00:00:01,0.55,0.25,1,3
09.05.2010 00:00:02,0.55,0.25,4,7
11.05.2010 00:00:02,0.5,0.3,3,5

我使用Python和Pandas来读取块中的数据,但我不确定如何访问每行中的每一列来执行基本算术。

这是我目前不工作的Python:

import pandas as pd

file_in = r"B:\Users\user\Documents\huge-dataset.csv"
file_out = r"B:\Users\user\Documents\aggregate.csv"

data = pd.read_csv(file_in, chunksize=100000)

for idx, chunk in enumerate(data):
    for row in chunk:
        print("row: ", row)
        diff = row[1] - row[2]
        data_out.append([row[0],diff])
        if row[0] == 0:
            prevrow = row
        else:
            rowdiff = row[1] - prevrow[1]

pd.write_csv(file_out, data_out)

我想使用列名,例如:

ratio = row['Width']/row['Length']

然后我想将每一行与之前的行进行比较,例如:

width_diff = row['width'] - prev_row['width']

有任何指示/更正吗?

python pandas dataframe statistics bigdata
1个回答
0
投票

假设 DataFrame 的名称是

df
。要计算第一个公式,您可以轻松编写:

ratio = df['Width']/df['Length']

如果您想将其存储为 DataFrame 中的新列,您可以编写:

df['ratio'] = df['Width']/df['Length']

对于第二个公式,您可以使用 diff() 函数。

width_diff = df['Width'].diff()

最后,为了将 DataFrame 存储到文件中,您可以使用

to_csv()
函数。 pandas 中没有
write_csv()
功能。

df.to_csv(file_out)
© www.soinside.com 2019 - 2024. All rights reserved.