2016-01-08 2 views
34

У меня есть панд DataFrame с 4-мя колоннами, и я хочу, чтобы создать новый DataFrame что только имеет три колонны. Этот вопрос аналогичен: Extracting specific columns from a data frame, но для pandas not R. Следующий код не работает, вызывает ошибку и, конечно же, не является пандасским способом сделать это.панды: Извлечение конкретных выбранных столбцов из DataFrame к новым DataFrame

import pandas as pd 
old = pd.DataFrame({'A' : [4,5], 'B' : [10,20], 'C' : [100,50], 'D' : [-30,-50]}) 
new = pd.DataFrame(zip(old.A, old.C, old.D)) # raises TypeError: data argument can't be an iterator 

Что такое пандаснический способ сделать это?

ответ

64

Существует способ сделать это, и это на самом деле похоже на R

new = old[['A', 'C', 'D']].copy() 

Здесь вы только выбрать столбцы, которые вы хотите от исходного кадра данных и созданием переменного для тех. Если вы хотите вообще изменить новый фреймворк, вы, вероятно, захотите использовать .copy(), чтобы избежать SettingWithCopyWarning.

Альтернативный метод заключается в использовании filter, который будет создавать копию по умолчанию:

new = old.filter(['A','B','D'], axis=1) 

Наконец, в зависимости от числа столбцов в исходной dataframe, это может быть более емким, чтобы выразить это с помощью drop (это также создаст копию по умолчанию):

new = old.drop('B', axis=1) 
Смежные вопросы