簡體   English   中英

如何用變量函數迭代地填充 pandas dataframe 中的行

[英]How to fill rows in pandas dataframe with variable functions iteratively

每次運行我創建的程序時,我想在 DataFrame pandas 中添加新行。 我事先不知道數據,函數應該將數據放在一個變量中,我想將這些變量連續添加。 現在我只是成功地添加了一行,但是當我每次運行程序時,這一行都會被下一行替換。 我不想替換該行,而是添加到下一行。

net_index = mylist.index('NET PAYE EN EUROS ')
net= mylist[net_index+2]  

total_index= mylist.index('CONGES ')
total = (mylist[total_index-1])


df = pd.DataFrame(columns=['Mois','Nom','Adresse','Net_payé','Total_versé'])
new = {'Mois': mois, 'Nom': nom, 'Adresse': adresse,'Net_payé':net, 'Total_versé':total}
df= df.append(new, ignore_index=True)

這是我的代碼的一部分。 首先,我創建一個帶有列名稱的空 Dataframe,然后創建一個包含每次運行都會更改的變量的字典。

這是我得到的結果,但是每次運行時,行都會被下一個替換,而不是添加

我想我必須做一個循環,但它永遠不會很好,我到處尋找解決方案,但沒有找到。

所以你知道我能做什么嗎? 太感謝了

顯然,您沒有將 dataframe 保存在任何地方。 一旦您的程序退出,所有數據和變量都會被擦除(丟失)。 您無法從以前的運行中檢索數據。 解決方案是在退出程序之前將 dataframe 保存到文件中。 然后對於每次運行,從文件中加載以前的數據。

實際上是的,我將 dataframe 保存在 csv 文件中。 因為我的目標是在 csv 中實現變量的結果。 但結果和我之前展示的一樣,總是取第一行並替換它,而不是添加新的。

df = pd.DataFrame(columns=['Mois','Nom', 'Adresse','Net_payé','Total_versé'])
new = {'Mois': mois, 'Nom': nom, 'Adresse': adresse,'Net_payé':net, 'Total_versé':total}
df =df.append(new, ignore_index=True)
    
df.to_csv('test.csv', header=True, index=False, encoding='utf-8')

感謝您的回復!

有多種方法可以向現有 DataFrame 添加行。 一種方法是使用pd.concat ,其中問題中最后一行代碼中的df.append function是一個特定的用例

但是,我更喜歡的方法是創建一個包含我的數據的嵌套列表,然后從頭開始創建一個新的 DataFrame。 首先確保要放置在列中的所有變量都是相同長度的列表。 像這樣的東西(本例中長度為 2 的列表):

mois_data = [1,2]
nom_data = [3,4]
adresse_data = [5,6]
net_paye_data = [7,8]
total_verse_data = [9,10]

將此數據放入字典中。 確保將 DataFrame 的列名稱設置為關鍵字(注意:這可能會導致您在某些變量名稱中使用的重音 aigu 出現問題,可以肯定的是。我省略了這些。您可以稍后重命名它們包括使用rename-function的重音 aigu )。

data_dict = dict(Mois=mois_data, Nom=nom_data, Adresse=adresse_data, Net_paye=net_paye_data, Total_verse=total_verse_data)

然后創建 dataframe,使用字典作為數據輸入:

df = pd.DataFrame(data=data_dict, columns=['Mois','Nom','Adresse','Net_paye','Total_verse'])

結果是:

   Mois  Nom  Adresse  Net_paye  Total_verse
0     1    3        5         7            9
1     2    4        6         8           10

暫無
暫無

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

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