2016-06-10 6 views
1

привет Я хотел бы цикл в значение списка в структуре dataframe панды:список переменных в Python панды

это возможно?

#for a single variable 
print(df["var1"].value_counts(normalize = True)) 

my_list=["var1","var2","var3"] 

#instead would like to do something like this: 

for i in my_list: 
    print(df[i].value_counts(normalize = True)) 
+0

Вы в основном хотите 'value_counts' для этих столбцов:' ["var1", "var2", "var3"] '? –

ответ

2

Есть встроенные инструменты, которые помогут.

my_list = ["var1", "var2", "var3"] 

# j is the column header 
# col is the column series 
for j, col in df[my_list].iteritems(): 
    print col.value_counts(normalize=True) 
+0

спасибо, но этот метод попадает во все столбцы фрейма данных, вместо этого я хотел бы зациклиться на 3 переменных, или я что-то упустил? – progster

+0

нет, мне что-то не хватает. обновление после ... обновлено – piRSquared

+1

кстати. Ваше решение вполне приемлемо. Мой ответ - просто альтернатива. – piRSquared

2

Вы можете использовать apply, но это все-таки петля за кулисами:

df[my_list].apply(pd.Series.value_counts, normalize=True) 

Если все, что вам нужно сделать, это печать, а затем использовать lambda функцию:

df[my_list].apply(lambda col: print(pd.Series.value_counts(col, normalize=True))) 
+0

спасибо, но этот метод зацикливается на всех столбцах данных, вместо этого я хотел бы зациклиться на 3 переменных, или я что-то упустил? – progster

+0

Извините @progster Я неправильно прочитал ваш вопрос. Почему вы недовольны своим кодом? – IanS

+0

мой плохой, я не совсем понял свой вопрос. Мне было интересно, был ли какой-нибудь «панд» более конкретный трюк – progster

1

Я думаю, вы можете использовать .apply() с lambda.

df[["var1","var2","var3"]].apply(lambda x: x.value_counts(normalize = True)) 
+0

На самом деле вам не нужна функция лямбда: вы можете передать 'normalize = True' в качестве аргумента ключевого слова в' apply' напрямую. См. Мой ответ;) – IanS

+0

@IanS О, да. Раньше я не видел вашего ответа. –

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