#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']))))