2017-02-23 139 views
1

我知道Pandas有一個get_dummy函數,您可以使用該函數將分類變量轉換爲DataFrame中的虛擬變量。我想要做的是略有不同。從值列創建虛擬變量列

我有一個包含百分比值從0.0到100.0的列。我需要將其轉換爲任何值大於等於10.0且任意值爲0的列爲1的列< 10.0。有沒有一個很好的方法可以在這裏重新調整get_dummy或者我將不得不構建一個循環來完成它?

回答

2

您可以可以轉換布爾變量直接整數:

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

我假設你在這裏討論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 
0

讓我們假設你有一個數據幀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)