我有一个包含近 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']
有任何指示/更正吗?
假设 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)