从值列创建虚拟变量列
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)
我知道 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)