Отображать только первое вхождение соответствия ключ / значение в кадре данных - PullRequest
0 голосов
/ 08 октября 2019

Можно ли отобразить только первое вхождение ключа в кадре данных?

Пример:

testDict = {A: 1, B: 2}

df

Name   Num
 A
 A
 B
 B

Ожидаемый результат

Name   Num
 A      1
 A      
 B      2
 B 

Ответы [ 3 ]

2 голосов
/ 08 октября 2019

Используйте дубликат , чтобы найти первое вхождение, а затем 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 голос
/ 08 октября 2019

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
1 голос
/ 08 октября 2019

Вы можете использовать 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    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...