簡體   English   中英

用字典中的值替換 pandas dataframe 中的一行

[英]Replace a row in a pandas dataframe with values from dictionary

我試圖填充一個空的 dataframe 通過使用 csv 模塊迭代一個大的制表符分隔文件,並用這些值替換 dataframe 中的每一行。 (在你問之前,是的,我已經嘗試了所有普通的 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 列,所以速度慢得令人難以置信。 這也感覺像是 pandas 可以更有效地做的事情,但我一直無法找到如何做。 DictReader 給出的每一行的字典如下所示:

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

這些值是我想在該行的那些列中放入 dataframe 的值。

謝謝!

所以在這種情況下你可以做的是構建你的大 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM