gpt4 book ai didi

python - 比较后用其他 Frame 覆盖 Frame

转载 作者:行者123 更新时间:2023-12-04 07:58:53 27 4
gpt4 key购买 nike

2 帧,我希望第 2 帧“覆盖”/更新第 1 帧。基本上,其中 Table1-colB-value = Table2-oldB-value,用 Table2-newB-value 覆盖 Table1-colB-value。
表格1


可乐



1
X

2


3
Z

4


5
X

6
X

7



表2


老B
新B


X





Z
N





覆盖后令人钦佩的结果:


可乐



1


2


3
N

4


5


6


7



这样的事情可能吗?我使用 replace 做了类似的事情,但比较 2 帧会更好,例如如果新值输入框架发生变化,您就不必在每个相应的点调整替换代码。

最佳答案

有很多方法可以做到这一点,一个快速的方法是将您的 df2 转换为 dict , 使用 oldB 列作为键,然后 map它在 df1 中的 colB 上:

d = dict(zip(df2.oldB, df2.newB))
df1['new_colB'] = df1['colB'].map(d)
会回来的
   colA colB new_colB
0 1 X L
1 2 Y M
2 3 Z N
3 4 W O
4 5 X L
5 6 X L
6 7 W O
编辑 : 我在 df1 的 colB 中添加了一个 P为了显示。
您几乎可以执行相同的过程,只需将其包装在 np.where() 中即可。 , 并设置如下条件,或使用 fillna()填写 nulls用'colB'
# Using np.where
import numpy as np
df1['new_colB'] = np.where(df1['colB'].map(d).isnull(),df1['colB'],df1['colB'].map(d))

# Using fillna()
df1['new_colB'] = (df1['colB'].map(d)).fillna(df1['colB'])
我会选择第二个选项,因为第一个 map 是两次。
两者都会给你:
df1
colA colB new_colB
0 1 X L
1 2 Y M
2 3 Z N
3 4 W O
4 5 X L
5 6 X L
6 7 W O
7 8 P P

关于python - 比较后用其他 Frame 覆盖 Frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66568948/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com