我有一个 pandas 数据框 (df1),其中有一列包含一些“NaN”值,我想将其替换为另一个数据框 (df2) 中的值。
这是必须映射的具有 NaN 的数据帧 (df1) 的一部分:
reporting_date_id filing_date_id
19910930 NaN
19920930 NaN
这是我想用来映射的数据框(df2),这有点棘手,因为它们具有相同的列名称
reporting_date_id filing_date_id
19910930 19911118
19920930 19921116
19930930 19931122
我试图以这种方式做到这一点,但它似乎不起作用
for n in range(len(df1)):
if df1['filing_date_id'].isna().loc[n]==True:
fix_date=df2[df2['reporting_date_id']==df1['reporting_date_id'].loc[n]]['filing_date_id']
df1['filing_date_id'].loc[n]=fix_date
最佳答案
您可以通过 Series.map
另一个 DataFrame
映射列 reporting_date_id
然后用它来替换 Series.fillna
中的缺失值:
s = df2.set_index('reporting_date_id')['filing_date_id']
df1['filing_date_id'] = df1['filing_date_id'].fillna(df1['reporting_date_id'].map(s))
关于python - 将列数据框与另一个数据框映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71220813/