Создать столбец фиктивной переменной из столбца значений

Я знаю, что у Pandas есть функция get_dummy, которую вы можете использовать для преобразования категориальных переменных в фиктивные переменные в DataFrame. То, что я пытаюсь сделать, немного отличается.

У меня есть столбец, содержащий процентные значения от 0,0 до 100,0. Мне нужно преобразовать это в столбец, который имеет 1 для любого значения >= 10,0 и 0 для любого значения ‹ 10,0. Есть ли хороший способ сделать это перепрофилированием get_dummy здесь или мне придется построить цикл, чтобы сделать это?


person Sveinn    schedule 23.02.2017    source источник


Ответы (3)


Вы можете напрямую конвертировать bool в ints:

(df.column_of_interest >= 10).astype(int)
person johnchase    schedule 23.02.2017

Я предполагаю, что вы обсуждаете здесь pandas.get_dummies, и Я не думаю, что это вариант использования для него. Вы пытаетесь установить два значения для логического условия. Один из подходов состоит в том, чтобы получить логическую серию и взять целочисленные представления для индикаторов с

df['indicators'] = (df.percentages >= 10.).astype('int')

Демо

>>> df

    percentages
0     70.176341
1     70.638246
2     55.078803
3     42.586290
4     73.340089
5     53.308670
6      3.059331
7     49.494812
8     10.379713
9      7.676286
10    55.023261
11     4.417545
12    51.744169
13    49.513638
14    39.189640
15    90.521703
16    29.696734
17    11.546118
18     5.737921
19    83.258049


>>> df['indicators'] = (df.percentages >= 10.).astype('int')

>>> df
    percentages  indicators
0     70.176341           1
1     70.638246           1
2     55.078803           1
3     42.586290           1
4     73.340089           1
5     53.308670           1
6      3.059331           0
7     49.494812           1
8     10.379713           1
9      7.676286           0
10    55.023261           1
11     4.417545           0
12    51.744169           1
13    49.513638           1
14    39.189640           1
15    90.521703           1
16    29.696734           1
17    11.546118           1
18     5.737921           0
19    83.258049           1
person miradulo    schedule 23.02.2017

Предположим, у вас есть фрейм данных df со столбцом Perc, содержащим ваши проценты:

import pandas as pd
pd.np.random.seed(111)

df = pd.DataFrame({"Perc": pd.np.random.uniform(1, 100, 20)})

Теперь вы можете легко сформировать новый столбец, используя лямбда-функцию, которая перекодирует ваши проценты, например так:

df["Category"] = df.Perc.apply(lambda x: 0 if x < 10.0 else 1)
person Schmuddi    schedule 23.02.2017