我知道Pandas有一個get_dummy
函數,您可以使用該函數將分類變量轉換爲DataFrame中的虛擬變量。我想要做的是略有不同。從值列創建虛擬變量列
我有一個包含百分比值從0.0到100.0的列。我需要將其轉換爲任何值大於等於10.0且任意值爲0的列爲1的列< 10.0。有沒有一個很好的方法可以在這裏重新調整get_dummy
或者我將不得不構建一個循環來完成它?
我知道Pandas有一個get_dummy
函數,您可以使用該函數將分類變量轉換爲DataFrame中的虛擬變量。我想要做的是略有不同。從值列創建虛擬變量列
我有一個包含百分比值從0.0到100.0的列。我需要將其轉換爲任何值大於等於10.0且任意值爲0的列爲1的列< 10.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)