用字典中的值替换熊猫数据框中的一行

时间:2020-04-17 15:27:57

标签: python pandas dataframe replace

我试图通过使用csv模块来迭代大的制表符分隔的文件,然后用这些值替换数据框中的每一行来填充一个空的数据框。 (在您问之前,是的,我已经尝试了所有常规的read_csv方法,但由于dtype问题以及文件的大小,没有任何效果。)

我首先使用np.empty使用我的数据维度创建了一个空的numpy数组。然后,我将其转换为pandas DataFrame。然后,我执行了以下操作:

with open(input_file) as csvfile:
    reader = csv.DictReader(csvfile,delimiter='\t')
    row_num = 0
    for row in reader:
        for key, value in row.items():
            df.loc[row_num,key] = value
        row_num += 1

这很好用,只是我的文件有900,000列,因此它的运行速度令人难以置信。感觉上熊猫也可以做得更有效,但是我一直找不到。 DictReader给出的每一行的字典如下:

{'columnName1':<value>,'columnName2':<value> ...} 

这些值是我要在该行的那些列的数据框中放入的值。

谢谢!

1 个答案:

答案 0 :(得分:0)

因此,在这种情况下,您可以做的是构建大型csv数据文件的较小块。 32GB Csv文件存在相同的问题,因此我必须构建块。阅读它们之后,您就可以与他们合作。

# read the large csv file with specified chunksize 
df_chunk = pd.read_csv(r'../input/data.csv', chunksize=1000000)

chunksize = 1000000设置一次读取多少行

Helpfull网站:

https://towardsdatascience.com/why-and-how-to-use-pandas-with-large-data-9594dda2ea4c