0
Давайте предположим, что у меня есть кадр данных:панды: замена категориальные значения с отсчетами нескольких классов этикетки
df = pd.DataFrame({'label': [0, 1, 2, 0, 1, 2], 'cat_col': [1, 1, 2, 2, 3, 3]})
cat_col label
0 1 0
1 1 1
2 2 2
3 2 0
4 3 1
5 3 2
Я хочу, чтобы преобразовать этот кадр данных в следующем:
cat_col, label, count_when_label_is_0, count_when_label_is_1, count_when_label_is_2
1 0 1, 1, 0
1 1 1, 1, 0
...
Поэтому в основном я добавьте один столбец для каждого значения метки (многотомная метка), и для каждой строки я поместил счетчик для этого значения метки, когда row.cat_col - это то, что находится в этой строке. Сейчас у меня это, но это очень медленно:
size = df[['cat_col', 'label']].groupby(['cat_col', 'label']).size()
def get_size(cat_val, label_val):
if label_val in size[cat_val]: return size[cat_val][target_val]
return 0
for label_val in range(9): # 9 classes in multinominal label
df['new_col_' + str(label_val)] = df['cat_col'].apply(
lambda cat_val: get_size(cat_val, label_val))
в то время как это отличается от ФОС, делая это как tranform (на cat_col) кажется очень странным. .. –