首页 > 解决方案 > 用字典中的值替换熊猫数据框中的一行

问题描述

我正在尝试通过使用 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> ...} 

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

谢谢!

标签: pythonpandasdataframereplace

解决方案


因此,在这种情况下,您可以做的是构建较小的大 csv 数据文件块。我对 32GB 的 Csv 文件也有同样的问题,所以我不得不构建块。阅读它们后,您可以与它们一起工作。

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

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

有用的网站:

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


推荐阅读