2016-01-19 81 views
0

所以我有一個數據框,有一堆特徵,其中一些我想做成一個虛擬變量,其中一些我想單獨留下,我想創建一個懶惰/更快的方式來做到這一點,而不僅僅是打字:如何在Python中的循環內創建虛擬變量?

dum_A = pd.get_dummies(df['A'],prefix='A') 
dum_B = pd.get_dummies(df['B'],prefix='B') 
... 
dum_N = pd.get_dummies(df['N'],prefix='N') 

所以這是我在下面提出的代碼。

List_of_dummy_names = [] 
List_of_dummy_col = [] 

for col in list(df1.columns.values): 
    if len(df1[col].value_counts()) <= 7: 
     List_of_dummy_names.append('dum_'+col) 
     List_of_dummy_col.append(col) 

for (dummy, col) in zip(List_of_dummy_names, List_of_dummy_col): 
    dummy = pd.get_dummies(df1[col], prefix=col) 

但是,這隻返回作爲列表中第n個特徵的僞數據幀的變量僞元。我在這裏做錯了什麼?我認爲每個循環都會從列表中獲得一個新名字,而不是像每次將新的虛擬DF分配給變量虛擬物。

非常感謝提前傢伙。

+1

如何使用字典? 'd [col] = pd.get_dummies(df1 [col],prefix = col)' – eumiro

+0

謝謝,我認爲這需要我大部分的方式,但是我怎樣才能將該詞典編入一個數據框,其餘的我的DF – pakkunrob

回答

1
for col in list(df.columns.values): 
    if len(df[col].value_counts()) <= 7: 
      df= pd.concat([df,pd.get_dummies(df[col],prefix=col)],axis=0) 
      df[col].fillna(0,inplace=True) 
     ` 
+0

嘿,似乎也工作,但遇到MemoryError問題,有沒有辦法解決這個問題? – pakkunrob