2016-10-17 4 views
2

Я пробовал использовать следующий код для выбора столбцов из фреймворка данных. В моем кадре данных около 50 значений. В конце я хочу создать сумму выбранных столбцов, создать новый столбец с этими суммами, а затем удалить выбранные столбцы.Pandas: выбор строк по списку

Я начал с

columns_selected = ['A','B','C','D','E'] 
df = df[df.column.isin(columns_selected)] 

но сказал AttributeError: объект «DataFrame» не имеет «столбец» атрибут

Что касается суммы: Так как я не хочу писать на сумму

df['sum_1'] = df['A']+df['B']+df['C']+df['D']+df['E'] 

Я тоже думал, что-то вроде

df['sum_1'] = df[columns_selected].sum(axis=1) 

было бы более удобным.

ответ

1

Вы хотите df[columns_selected] к югу выберите ФР список столбцов

, то вы можете сделать df['sum_1'] = df[columns_selected].sum(axis=1)

Для фильтрации ФРА только в смещ_по_столбцах интересов передать список столбцов, df = df[columns_selected] примечания что это обычная ошибка только для списка строк: df = df['a','b','c'], который поднимет KeyError.

Обратите внимание, что у вас опечатка в исходной попытке:

df = df.loc[:,df.columns.isin(columns_selected)] 

выше работало бы, во-первых, вам нужно columns не column, во-вторых вы можете использовать булевы маску в качестве маски против колонн по переходя к loc или ix в качестве арг выбора столбца:

In [49]: 
df = pd.DataFrame(np.random.randn(5,5), columns=list('abcde')) 
df 

Out[49]: 
      a   b   c   d   e 
0 -0.778207 0.480142 0.537778 -1.889803 -0.851594 
1 2.095032 1.121238 1.076626 -0.476918 -0.282883 
2 0.974032 0.595543 -0.628023 0.491030 0.171819 
3 0.983545 -0.870126 1.100803 0.139678 0.919193 
4 -1.854717 -2.151808 1.124028 0.581945 -0.412732 

In [50]: 
cols = ['a','b','c'] 
df.ix[:, df.columns.isin(cols)] 

Out[50]: 
      a   b   c 
0 -0.778207 0.480142 0.537778 
1 2.095032 1.121238 1.076626 
2 0.974032 0.595543 -0.628023 
3 0.983545 -0.870126 1.100803 
4 -1.854717 -2.151808 1.124028 
+0

Хорошо, первую часть работы. Как насчет выделения столбцов после этого? – RPacker

+0

Вы имеете в виду только 'df = df [columns_selected]'? – EdChum

+0

Да, создав colum of .sum (axis = 1), я хочу удалить все столбцы_selected – RPacker

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