我有一个名为 df1 的 df,如下所示:
NAME CODE TYPE ........... many other columns
object1 20052020 A
object2 20082021 B
object3 20012031 B
object4 20010123 C
. . .
. . .
. . .
etc etc etc
我还有另一个 df,名为 df2:
NAME CODE ........... many other columns
object1 20052020
object2 20082021
. .
我想更改 df1 中的 TYPE 值。我只想通过代码在 df2 和 df1 之间的公共(public)元素中进行此更改,如下所示(我在公共(public)元素中将 A 类型更改为 F 类型):
NAME CODE TYPE ........... many other columns
object1 20052020 F
object2 20082021 F
object3 20012031 B
object4 20010123 C
. . .
. . .
. . .
etc etc etc
最佳答案
使用DataFrame.merge
与 boolean indexing
:
df1 = df1.merge(df2['CODE'], on='CODE', how='left', indicator=True)
df1.loc[df1.pop('_merge').eq('both'), 'TYPE'] = 'F'
或使用Series.map
与 Series.fillna
,
df1['TYPE']=(
df1['CODE'].map(
df2.set_index('CODE').assign(TYPE='F').pop('TYPE'))
.fillna(df1['TYPE'])
)
结果:
# print(df1)
NAME CODE TYPE
0 object1 20052020 F
1 object2 20082021 F
2 object3 20012031 B
3 object4 20010123 C
关于python - 如何更改两个数据帧之间公共(public)元素的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62799735/