python - 根据 Pandas 另一个选项卡中的匹配项更改值

标签 python python-3.x pandas dataframe

你好我有两个 df 比如

df1

COL1 COL2
A 1
A 2
B 3
B 4
C 5
D 6
E 7
F 8 

df2

Old New 
A  A.1
C  C.1
E  E.1 

我想用 df2.New 值替换 COL1df2.Old 中匹配的值。

并得到: df1

COL1 COL2
A.1 1
A.1 2
B 3
B 4
C.1 5
D 6
E.1 7
F 8 

有人有想法吗?

最佳答案

df1 = pd.read_csv(io.StringIO('''COL1 COL2
A 1
A 2
B 3
B 4
C 5
D 6
E 7
F 8 '''),sep='\s+')
df2 = pd.read_csv(io.StringIO('''Old New 
A  A.1
C  C.1
E  E.1 '''),sep='\s+')

df1['COL1'] = df1.merge(df2.rename(columns={'Old':'COL1'}),on='COL1',how='left')['New'].fillna(df1['COL1'])

输出:

    COL1    COL2
0   A.1 1
1   A.1 2
2   B   3
3   B   4
4   C.1 5
5   D   6
6   E.1 7
7   F   8

关于python - 根据 Pandas 另一个选项卡中的匹配项更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65581315/

相关文章:

python - 当前值为 0(零)时复制前一行值

python - 客户端使用 python 套接字接收两条单独的消息

python - 如何禁用GTK中的关闭按钮?

python - tf.fake_quant_with_min_max_args 和 tf.fake_quant_with_min_max_vars 有什么区别

python - 气泡排序开关和旋转挑战

python - 在日志记录配置中使用socket.SOCK_STREAM时为"Protocol wrong type for socket"

python - 带有时间分组的 Pandas 滚动功能

python - 如何替换 Pandas 数据框中字符串中的空格?

python - np.where 与日期时间产生 Unix 时间戳

python - 使用 openpyxl 获取单元格值的显示字符串