簡體   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