python - Python - 根据另一个数据框匹配替换数据框中的值
问题描述
假设我有 2 个名为 A 和 B 的 Python 数据帧2,如下所示。如何根据 B 中的列 ID 和月份的匹配替换数据框 A 中的列值?有任何想法吗?
谢谢
数据框A:
ID Month City Brand Value
1 1 London Unilever 100
1 2 London Unilever 120
1 3 London Unilever 150
1 4 London Unilever 140
2 1 NY JP Morgan 90
2 2 NY JP Morgan 105
2 3 NY JP Morgan 100
2 4 NY JP Morgan 140
3 1 Paris Loreal 60
3 2 Paris Loreal 75
3 3 Paris Loreal 65
3 4 Paris Loreal 80
4 1 Tokyo Sony 100
4 2 Tokyo Sony 90
4 3 Tokyo Sony 85
4 4 Tokyo Sony 80
数据框 B:
ID Month Value
2 1 100
3 3 80
解决方案
与左连接一起使用merge
并用原始值替换缺失值fillna
:
df = df1.merge(df2, on=['ID', 'Month'], how='left', suffixes=('_',''))
df['Value'] = df['Value'].fillna(df['Value_']).astype(int)
df = df.drop('Value_', axis=1)
print (df)
ID Month City Brand Value
0 1 1 London Unilever 100
1 1 2 London Unilever 120
2 1 3 London Unilever 150
3 1 4 London Unilever 140
4 2 1 NY JP Morgan 100
5 2 2 NY JP Morgan 105
6 2 3 NY JP Morgan 100
7 2 4 NY JP Morgan 140
8 3 1 Paris Loreal 60
9 3 2 Paris Loreal 75
10 3 3 Paris Loreal 80
11 3 4 Paris Loreal 80
12 4 1 Tokyo Sony 100
13 4 2 Tokyo Sony 90
14 4 3 Tokyo Sony 85
15 4 4 Tokyo Sony 80
推荐阅读
- reactjs - 有没有办法在不使用'import'语句的情况下导入反应组件
- c# - Automapper 在 .net 核心的反向映射中不起作用
- c - C 使用 qsort 和 strcmp 对字符串数组进行排序 - 警告:指针类型不兼容
- windows - QProcess 因特定命令而失败
- c++ - 在 C++ 中的 Grpc 双向流期间修改元数据
- javascript - 如果在 testcafe 中出现条件,则无法申请
- java - 错误 java.lang.NoClassDefFoundError: com/auth0/jwt/algorithms/Algorithm
- object - 如何在 .hover 变量路径中使用 .contentDocument?
- c++ - C++ 集
什么是最合适的解决方案? - excel - 用于将描述符号自动放置到单击行的所有列的 vba 代码