首页 > 解决方案 > 根据 Pandas 中两列之间的匹配查找值

问题描述

我有这个数据

import pandas as pd

data = {'Code':  ['20','22','21','21','21','21','20','20','20','20'],
        'Code2': ['1', '5', '2', '', '2', '2', '1', '', '1', '1']}

df = pd.DataFrame (data, columns = ['Code','Code2'])


   Code Code2
0   20  1
1   22  5
2   21  2
3   21  
4   21  2
5   21  2
6   20  1
7   20  
8   20  1
9   20  1

我正在尝试Code2根据以前的关联填充缺失的值。所以,我知道什么时候Code是 20,Code2是 1,什么时候Code是 21,Code2是 2。我的输出应该是这样的:

  Code  Code2
0   20  1
1   22  5
2   21  2
3   21  2
4   21  2
5   21  2
6   20  1
7   20  1
8   20  1
9   20  1

我想我可以使用一些连接来做到这一点,但如果可能的话,我会热衷于使用一个衬垫。

标签: pandaslookup

解决方案


使用drop_duplicatesmap

data = {'Code':  ['20','22','21','21','21','21','20','20','20','20'],
        'Code2': ['1', '5', '2', '', '2', '2', '1', '', '1', '1']}

df = pd.DataFrame (data, columns = ['Code','Code2'])

m = df.drop_duplicates('Code').set_index('Code')['Code2']

df['Code2'] = df['Code'].map(m)
df

输出:

  Code Code2
0   20     1
1   22     5
2   21     2
3   21     2
4   21     2
5   21     2
6   20     1
7   20     1
8   20     1
9   20     1

推荐阅读