仅映射数据框中键/值匹配的第一个匹配项

时间:2019-10-08 17:11:59

标签: python pandas

是否可以仅映射数据帧中第一次出现的键?

例如:

testDict = {A:1,B:2}

df

Name   Num
 A
 A
 B
 B

预期产量

Name   Num
 A      1
 A      
 B      2
 B 

3 个答案:

答案 0 :(得分:2)

使用duplicated查找第一个匹配项,然后找到map

df['Num'] = df.Name[df.Name.duplicated(keep='last')].map(testDict)
print(df)

输出

  Name  Num
0    A  1.0
1    A  NaN
2    B  2.0
3    B  NaN

要删除NaN值,请执行以下操作:

df = df.fillna('')

答案 1 :(得分:1)

您可以使用duplicatedmap

df['Num'] = np.where(~df['Name'].duplicated(), df['Name'].map(testDict), '')

输出:

  Name Num
0    A   1
1    A    
2    B   2
3    B    

答案 2 :(得分:1)

map drop_duplicates,假设您具有唯一的对齐索引。 (最好保留NaN以便该列保持数字)

df['Num'] = df['Name'].drop_duplicates().map(testDict)

  Name  Num
0    A  1.0
1    A  NaN
2    B  2.0
3    B  NaN