簡體   English   中英

用Python中其他數據框的列值替換列中的值

[英]Replace values in column with column values from other dataframe in Python

我有兩個數據框,一個帶有更多列(但是其中兩個很重要),第二個帶有兩個列。 DF1:

col_a  col_b
101     104
102     201
103     301
505     601

DF2:

col_a_a col_b_b
420      637
425      643
201      701
601      702

我需要下一件事。 查找df1['col_b'] ,如果在df2['col_a_a']存在,則將其替換為df2['col_b_b']

我嘗試了兩種方法:

df1['col_b'] = np.where(df1['col_b'] == df2['col_a_a'], df2['col_b_b'], df1['col_b'])

df1.col_b[df1.col_b == df2.col_a_a] = df2.col_b_b

但是他們兩個都向我返回了相同的錯誤: ValueError: Can only compare identically-labeled Series objects

所需的輸出:

col_a  col_b
    101     104
    102     701
    103     301
    505     702

使用由set_index創建的Series replace

df1['col_b'] = df1['col_b'].replace(df2.set_index('col_a_a')['col_b_b'])
print (df1)
   col_a  col_b
0    101    104
1    102    701
2    103    301
3    505    702

另一種方法,使用pd.Series.map

df1['col_b'] = df1['col_b'].map(df2.set_index('col_a_a')['col_b_b']).fillna(df1['col_b'])

根據您的數據,這可能更有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM