是否可以仅映射数据帧中第一次出现的键?
例如:
testDict = {A:1,B:2}
df
Name Num
A
A
B
B
预期产量
Name Num
A 1
A
B 2
B
答案 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)
您可以使用duplicated
和map
:
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