首页 > 解决方案 > 从另一个更新数据框不起作用

问题描述

我已经多次使用以下方法,当想要从另一个数据帧更新一个数据帧中的值时,它可以正常工作。但是,我有两个不想工作的数据框。以下是我遵循的步骤。我不知道为什么这不起作用。我错过了什么?有人可以指出我可以调查的可能原因:

“mydate”的原始值在 df 中是“未找到”:

print(df.loc[df.FileName == '100212']['mydate'])
Out:
406    'not found'
Name: mydate, dtype: object

查找 df1 中的“新日期”值是 '10-2-1997'

print(df1.loc[df1.FileName == '100212']['new date']
Out:
2766    10-2-1997
Name: new date, dtype: object

以下应使用 df1 中的“新日期”更新 df 中的“mydate”:

df.loc[df.FileName.isin(df1.FileName), ['mydate']] = df1['new date']

但我得到的不是“10-2-1997”,而是“NaN”:

print(df.loc[df.FileName == '100212']['mydate'])
Out:
406    'NaN'
Name: mydate, dtype: object

标签: pythonpandasdataframe

解决方案


系列分配由 index执行。但是您的两个数据框之间的索引不对齐。您可以pd.Series.map改为使用系列:

series_map = df1.set_index('FileName')['new date']
df['mydate'] = df['FileName'].map(series_map).fillna(df['mydate'])

当两个数据帧之间的文件名不通用时,使用fillna之后确保df['mydate']保持不变。


推荐阅读