python - 将列数据框与另一个数据框映射

标签 python pandas for-loop mapping nan

我有一个 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/

相关文章:

python - 更改 python 函数参数的类型而不重新绑定(bind)

python - Pandas 连接失败

java - 循环永远不会开始

javascript - 数字串不能以零开头。其他解决方案?

python - 如何使用 pandas 将多个 Xpath 转换为数据框?

java - 在 for 循环中使用 "i++"

Python - Tkinter Canvas 中的文本输入

python - 使用 python 2.6.6 流式传输推文时出现连接错误

python - AutoIt 到 Python 加密/解密

python - 如何为 Pandas 数据框中的每一列制作一个seaborn distplot?