繁体   English   中英

我有两个数据框 df 和 df1 具有相同的 id 列,但两个数据框中的列名不同,我想在第二个 dataframe 中更新值

[英]I have a two data frames df and df1 have same id columns but different column names in both data frames and I want update values in second dataframe

在此处输入图像描述在此处输入图像描述

我想根据更新的 df1 更新 df1,如果 df1 有 nans 替换为值,如果 df 的值与两个数据帧上的 ID 列匹配。

我的预期 Output 在第二张图片中 nan 替换为我在下面提供的示例的值

ID QD QP QE

101 4 6 4

102 5 8 5

103 7 6 6

104 8 3 5

105 4 2 5

如果你的ID列是排序好的,这两列是一一对应的,你可以使用

df1[df1.isnull()] = df.values
print(df1)

    ID   QD   QP   QE
0  101  4.0  6.0  4.0
1  102  5.0  8.0  5.0
2  103  7.0  6.0  6.0
3  104  8.0  3.0  5.0
4  105  4.0  2.0  5.0

如果没有,最好将ID列设置为索引,并在fillna方法、 combine_first方法和update方法中选择一种根据索引更新列。

df1 = df1.set_index('ID')

# fillna
df1 = df1.fillna(df.set_index('ID').set_axis(df1.columns, axis=1)).reset_index()

# combine_first, if df is bigger than your original df1,
# the additional rows and columns are added
df1 = df1.combine_first(df.set_index('ID').set_axis(df1.columns, axis=1)).reset_index()

# update method will modify data inplace,
# you need to do reset index in separate step
df1.update(df.set_index('ID').set_axis(df1.columns, axis=1))
df1.reset_index()
print(df1)


    ID   QD   QP   QE
0  101  4.0  6.0  4.0
1  102  5.0  8.0  5.0
2  103  7.0  6.0  6.0
3  104  8.0  3.0  5.0
4  105  4.0  2.0  5.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM