Суть вопроса заключается в «создании нового столбца в DataFrame» на основе существующего столбца «user_id» и словаря {dict}, который содержит ключи словарных значений столбца «user_id» и значения словарь их типы.
У меня есть следующий DataFrame df.
df = pd.DataFrame({"user_id" : [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5],
"value" : [0, 100, 50, 0, 25, 50, 100, 0, 7, 8, 20]})
print(df)
| user_id | value
_________________
0 | 1 | 0
1 | 2 | 100
2 | 2 | 50
3 | 3 | 0
4 | 3 | 25
5 | 3 | 50
6 | 4 | 100
7 | 4 | 0
8 | 4 | 7
9 | 4 | 8
10 | 5 | 20
Кроме того, у меня есть словарь, который
dict = {1 : 'type_a', 2: 'type_b', 3: 'type_a', 4: 'type_b', 5: 'type_a'}
Моя идея это создать третий столбец в моем DataFrame df, который будет называться тарифом, поэтому, если у меня есть user_id 3, все строки в DataFrame будут иметь тариф типа a.
Я нашел одно решение, но я не совсем понимаю, как это реализовано.
df['tariffs'] = df.apply(lambda x: dict[x.user_id], axis=1)
print(df)
| user_id | value |
_________________________
0 | 1 | 0 |type_a
1 | 2 | 100 |type_b
2 | 2 | 50 |type_b
3 | 3 | 0 |type_a
4 | 3 | 25 |type_a
5 | 3 | 50 |type_a
6 | 4 | 100 |type_b
7 | 4 | 0 |type_b
8 | 4 | 7 |type_b
9 | 4 | 8 |type_b
10 | 5 | 20 |type_a
Результат, который я получаю после этой строки кода, - именно то, что я хочу
Особенно я не понимаю эту часть dict[x.user_id]
Вопрос в том, есть ли альтернативы методу, который я использовал. И что такое логика c за dict[x.user_id]
. Заранее спасибо