2016-01-19 2 views
0

Итак, у меня есть dataframe с кучей eatures, некоторые из которых я хочу сделать в фиктивной переменной, некоторые из которых я хочу оставить в покое, и я хотел создать ленивый/более быстрый способ сделать это, а не просто набрав:Как создать фиктивные переменные в цикле в 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) 

Но это только возвращает переменный манекен будучи фиктивной dataframe из п-го элемента в списках. Что я здесь делаю неправильно? Я думал, что для каждого цикла он получает новое имя из списка, вместо этого он выглядит так, что каждый раз придумывает новый манекен DF для переменной-манекена.

Большое спасибо заранее, ребята.

+1

Как насчет использования dict? 'd [col] = pd.get_dummies (df1 [col], prefix = col)' – eumiro

+0

спасибо, я думаю, что это занимает большую часть пути, но как я могу сделать этот dict в ядре данных, я могу присоединиться к остальная часть моего 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

эй, похоже, тоже работает, но сталкиваясь с проблемами памятиError, есть ли способ обойти это? – pakkunrob

Смежные вопросы