从另一个数据帧更新数据帧不起作用



我已经多次使用以下方法,当希望从另一个数据帧更新一个数据框中的值时,这种方法效果很好。然而,我有两个数据帧不想工作。以下是我遵循的步骤。我不明白为什么这不起作用。我错过了什么?有人能给我指出我可以调查的可能原因吗:

df:中未找到"mydate"的原始值

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

以下内容应将df中的"mydate"更新为df1中的"new date":

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

系列分配由索引执行。但是索引在两个数据帧之间并不对齐。您可以将pd.Series.map与系列一起使用:

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

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