【发布时间】:2015-03-03 19:42:48
【问题描述】:
我正在寻找一种更简洁的方法来实现以下目标:
我有一个包含某些列的 DataFrame,如果有新信息到达,我想更新这些列。 pandas 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')
我期待您的提示和想法。
【问题讨论】:
-
如果
name是您想用来“识别”行的列,您可以将其设为索引吗?