[英]A clean and efficient way to update cells in pandas DataFrames
我正在尋找一種更清潔的方法來實現以下目標:
我有一個帶有某些列的DataFrame,如果有新信息到達,我想更新這些列。 熊貓DataFrame
“新信息”(來自CSV文件)可以具有更多或更少的行,但是,我只想添加
(注意缺少名稱“ 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.