从值列创建虚拟变量列

Create dummy variable column from value column

我知道 Pandas 有一个 get_dummy 函数,您可以使用该函数将分类变量转换为 DataFrame 中的虚拟变量。我要做的事情略有不同。

我有一列包含从 0.0 到 100.0 的百分比值。我需要将其转换为一个列,其中任何值 >= 10.0 的值为 1,任何值 < 10.0 的值为 0。有什么好的方法可以在这里重新利用 get_dummy 还是我必须构建一个循环才能做到这一点?

您可以直接将布尔值转换为整数:

(df.column_of_interest >= 10).astype(int)

我假设您在这里讨论 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

假设您有一个数据框 df,其列 Perc 包含您的百分比:

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

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

现在,您可以使用重新编码百分比的 lambda 函数轻松创建一个新列,如下所示:

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