【发布时间】:2021-11-10 08:12:45
【问题描述】:
我有一个关于 Pandas 以及正确索引和替换值的问题。
我有 2 个 DataFrame,df1 和 df2,具有相同的列(Col1、Col2、Col3 和 Col4)。
df1 = pd.DataFrame([['A','b','x',1], ['A','b','y',2], ['A','c','z',3], ['B','b','x',4]], columns=['Col1', 'Col2', 'Col3', 'Col4'])
df2 = pd.DataFrame([['A','b','y',0], ['B','b','x',0]], columns=['Col1','Col2','Col3','Col4'])
df1
Col1 Col2 Col3 Col4
0 A b x 1
1 A b y 2
2 A c z 3
3 B b x 4
df2
Col1 Col2 Col3 Col4
0 A b y 0
1 B b x 0
在 df1 中,我想替换 Col4 中与 其他列 的值匹配的行中的值(Col1, df2 中的 Col2 和 Col3) 具有另一个值(比如说 100)。
生成的 df1 如下所示:
df1
Col1 Col2 Col3 Col4
0 A b x 1
1 A b y 100
2 A c z 3
3 B b x 100
我尝试过这样的事情:
columns = list(df1.columns)
columns.remove('Col4')
df1.loc[(df1[cols] == df2[cols].values).all(axis=1)]['Col4']=100
但是我遇到了错误,我不确定这是否达到了我想要的效果。
【问题讨论】: