假设我有两个名为A和B的Python数据frame2,如下所示。 如何根据B中ID和Month的匹配替换数据框A中的Value列? 有什么想法吗?
谢谢
数据框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
答案 0 :(得分:0)
合并它们,然后删除未使用的字段:
C = pd.merge(A[['ID', 'Month', 'City', 'Brand']],B, on=['ID', 'Month'])
C = C[['ID', 'Month', 'City', 'Brand', 'Value']]
这应该有效
答案 1 :(得分:0)
使用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