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

时间:2019-01-28 21:57:00

标签: python pandas dataframe

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

在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中的“新日期”:

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

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

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

1 个答案:

答案 0 :(得分:0)

系列分配是按索引执行的。但是索引不能在您的两个数据框之间对齐。您可以将pd.Series.map与系列结合使用:

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

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