Панды объединяют фрейм данных и ряды по столбцу

#python #pandas

#python #pandas

Вопрос:

У меня есть фрейм данных Pandas, df который хранит соответствие между меткой и целым числом, и Pandas Series s , который содержит последовательность меток :

 print(df)

          label    id
0     AAAAAAAAA     0
1     BBBBBBBBB     1
2     CCCCCCCCC     2
3     DDDDDDDDD     3
4     EEEEEEEEE     4


print(s)

0        AAAAAAAAA
1        BBBBBBBBB
2        CCCCCCCCC
3        CCCCCCCCC
4        EEEEEEEEE
5        EEEEEEEEE
6        DDDDDDDDD
  

Я хочу объединить этот фрейм данных и этот ряд, чтобы получить последовательность целых чисел, соответствующую моей последовательности s .
Вот ожидаемый результат моего примера :

 print(df.join(s)["id"])

0        0
1        1
2        2
3        2
4        4
5        4
6        3
  

Ответ №1:

Используйте Series.map с Series :

 print (s.map(df.set_index('label')['id']))
0    0
1    1
2    2
3    2
4    4
5    4
6    3
Name: a, dtype: int64
  

Альтернатива — будьте осторожны, если дублирует ошибку, но возвращает последнюю дублирующую строку:

 print (s.map(dict(zip(df['label'], df['id']))))