由于大小原因,Python数据帧无法读取CSV

由于大小原因,Python数据帧无法读取CSV,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试将CSV文件读取到数据帧,但由于CSV太大,进程被终止,因此出现问题 我只是想对数据帧做一些简单的更新 这是我当前的代码: df = pd.read_csv(input_file) df = df[df.col_5 != 'col_5'] columns_req = ['COL_1','COL_2','COL_3','COL_4'] df = df.loc[:,columns_req] df = df.rename(columns={col:col.lower() for col in

我正在尝试将CSV文件读取到数据帧,但由于CSV太大,进程被终止,因此出现问题

我只是想对数据帧做一些简单的更新

这是我当前的代码:

df = pd.read_csv(input_file)
df = df[df.col_5 != 'col_5']
columns_req = ['COL_1','COL_2','COL_3','COL_4']
df = df.loc[:,columns_req]
df = df.rename(columns={col:col.lower() for col in df.columns})
df.to_csv(output_file, sep=',', index=False)
当使用较小的CSV时,上述所有代码都能正常工作,但当使用较大的CSV时,这些代码会中断

我有办法处理这个吗

我已经读到,我可以迭代,例如:

foo = pd.read_csv(input_file, iterator=True, chunksize=1000)

但我不知道这是否会像我预期的那样起作用。如何将我的更改应用于foo,然后在末尾再次合并所有行?

您可以阅读,正如您所说的成片阅读。以下是一个例子:

import pandas as pd
import numpy as np
import time 
df = pd.DataFrame(data=np.random.randint(99999, 99999999, size=(10000000,10)),columns=['A','B','C','D','E','F','G','H','I','J'])
df['K'] = pd.util.testing.rands_array(5,10000000)
df.to_csv("my_file.csv")
如果您以常规方式阅读文件:

start = time.time()
df = pd.read_csv('my_file.csv')
end = time.time()
print("Reading time: ",(end-start),"sec")

Read time:   20.328343152999878 sec
在阅读的时候

start = time.time()
chunk = pd.read_csv('my_file.csv',chunksize=1000000)
end = time.time()
print("Reading time: ",(end-start),"sec")
pd_df = pd.concat(chunk)

Reading time:   0.011000394821166992 sec

你可以读,就像你说的那样。以下是一个例子:

import pandas as pd
import numpy as np
import time 
df = pd.DataFrame(data=np.random.randint(99999, 99999999, size=(10000000,10)),columns=['A','B','C','D','E','F','G','H','I','J'])
df['K'] = pd.util.testing.rands_array(5,10000000)
df.to_csv("my_file.csv")
如果您以常规方式阅读文件:

start = time.time()
df = pd.read_csv('my_file.csv')
end = time.time()
print("Reading time: ",(end-start),"sec")

Read time:   20.328343152999878 sec
在阅读的时候

start = time.time()
chunk = pd.read_csv('my_file.csv',chunksize=1000000)
end = time.time()
print("Reading time: ",(end-start),"sec")
pd_df = pd.concat(chunk)

Reading time:   0.011000394821166992 sec