簡體   English   中英

一種干凈有效的方法來更新Pandas DataFrames中的單元格

[英]A clean and efficient way to update cells in pandas DataFrames

我正在尋找一種更清潔的方法來實現以下目標:

我有一個帶有某些列的DataFrame,如果有新信息到達,我想更新這些列。 熊貓DataFrame “新信息”(來自CSV文件)可以具有更多或更少的行,但是,我只想添加

原始數據框

在此處輸入圖片說明

具有新信息的DataFrame

在此處輸入圖片說明

(注意缺少名稱“ c ”在這里和名稱“在“狀態”的變化a ”)

現在,我編寫了以下“不便”代碼,用新信息更新了原始DataFrame。

根據“名稱”列更新“狀態”列

for idx,row in df_base.iterrows():
    if not df_upd[df_upd['name'] == row['name']].empty:
        df_base.loc[idx, 'status'] = df_upd.loc[df_upd['name'] == row['name'], 'status'].values

在此處輸入圖片說明

它完全可以達到我想要的效果,但是看起來既不好也不高效,我希望可以有一種更簡潔的方法。 我嘗試了pd.merge方法,但是問題是它將添加新列而不是“更新”該列中的單元格。

pd.merge(left=df_base, right=df_upd, on=['name'], how='left')

在此處輸入圖片說明

我期待您的提示和想法。

您可以set_index("name")然后調用.update

>>> df_base = df_base.set_index("name")
>>> df_upd = df_upd.set_index("name")
>>> df_base.update(df_upd)
>>> df_base
      status
name        
a          0
b          1
c          0
d          1

通常,您可以將索引設置為任何合適的索引,然后根據需要進行更新和重置。

暫無
暫無

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

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