![](/img/trans.png)
[英]If values from two columns in two different data frames match then copy values from another column in df2 to column in df1
[英]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 列匹配。
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.