2016-03-23 22 views
1

Ich habe den folgenden Code:Python Pandas dataframe- Spalten von Header entfernen

data = pd.read_csv('audit_nor.csv') 
d1 = pd.get_dummies(data) 
header = d1.columns.values 
print(header) 
print(type(header)) 

Die Ausgabe sieht so aus:

['ID' 'Age' 'Income' 'Deductions' 'Hours' 'Adjustment' 'Adjusted' 
'Employment_Consultant' 'Employment_PSFederal' 'Employment_PSLocal' 
'Employment_PSState' 'Employment_Private' 'Employment_SelfEmp' 
'Employment_Unemployed' 'Employment_Volunteer' 'Education_Associate' 
'Education_Bachelor' 'Education_College' 'Education_Doctorate' 
'Education_HSgrad' 'Education_Master' 'Education_Preschool' 
'Education_Professional' 'Education_Vocational' 'Education_Yr10' 
'Education_Yr11' 'Education_Yr12' 'Education_Yr5t6' 'Education_Yr7t8' 
'Education_Yr9' 'Marital_Absent' 'Marital_Divorced' 'Marital_Married' 
'Marital_Married-spouse-absent' 'Marital_Unmarried' 'Marital_Widowed' 
'Occupation_Cleaner' 'Occupation_Clerical' 'Occupation_Executive' 
'Occupation_Farming' 'Occupation_Machinist' 'Occupation_Professional' 
'Occupation_Repair' 'Occupation_Sales' 'Occupation_Service' 
'Occupation_Support' 'Occupation_Transport' 'Sex_Female' 'Sex_Male' 
'Accounts_Cuba' 'Accounts_England' 'Accounts_Germany' 'Accounts_India' 
'Accounts_Indonesia' 'Accounts_Iran' 'Accounts_Ireland' 'Accounts_Jamaica' 
'Accounts_Malaysia' 'Accounts_Mexico' 'Accounts_Philippines' 
'Accounts_Portugal' 'Accounts_UnitedStates' 'Accounts_Vietnam'] 
<type 'numpy.ndarray'> 

Ich versuche, die ‚ID zu entfernen 'aus dem Header, so dass ich die gesamte' ID 'Spalte aus dem Datenrahmen entfernen könnte. Ich tat:

columns = header.delete('ID') 

aber erhalten Fehler:

AttributeError: 'numpy.ndarray' object has no attribute 'delete' 

Ich bin frage mich, was der richtige Weg, um dieses zu lösen sein sollte. Vielen Dank!

+0

Was die Ausnahme ist (das heißt, erklären die Fehler)? – ChrisP

+0

Fehlermeldung oben aktualisiert. Vielen Dank! – Edamame

Antwort

2

können Sie numpy.delete mit numpy.where verwenden für index finden:

import numpy as np 

print np.where(header=='ID') 
(array([0], dtype=int64),) 

columns = np.delete(header, np.where(header=='ID')) 
print columns 
['Age' 'Income' 'Deductions' 'Hours' 'Adjustment' 'Adjusted' 
'Employment_Consultant' 'Employment_PSFederal' 'Employment_PSLocal' 
'Employment_PSState' 'Employment_Private' 'Employment_SelfEmp' 
'Employment_Unemployed' 'Employment_Volunteer' 'Education_Associate' 
'Education_Bachelor' 'Education_College' 'Education_Doctorate' 
'Education_HSgrad' 'Education_Master' 'Education_Preschool' 
'Education_Professional' 'Education_Vocational' 'Education_Yr10' 
'Education_Yr11' 'Education_Yr12' 'Education_Yr5t6' 'Education_Yr7t8' 
'Education_Yr9' 'Marital_Absent' 'Marital_Divorced' 'Marital_Married' 
'Marital_Married-spouse-absent' 'Marital_Unmarried' 'Marital_Widowed' 
'Occupation_Cleaner' 'Occupation_Clerical' 'Occupation_Executive' 
'Occupation_Farming' 'Occupation_Machinist' 'Occupation_Professional' 
'Occupation_Repair' 'Occupation_Sales' 'Occupation_Service' 
'Occupation_Support' 'Occupation_Transport' 'Sex_Female' 'Sex_Male' 
'Accounts_Cuba' 'Accounts_England' 'Accounts_Germany' 'Accounts_India' 
'Accounts_Indonesia' 'Accounts_Iran' 'Accounts_Ireland' 'Accounts_Jamaica' 
'Accounts_Malaysia' 'Accounts_Mexico' 'Accounts_Philippines' 
'Accounts_Portugal' 'Accounts_UnitedStates' 'Accounts_Vietnam'] 

Oder können Sie list Verständnis für remove ID verwenden:

columns = [x for x in header if x != 'ID'] 
print columns 
['Age', 'Income', 'Deductions', 'Hours', 'Adjustment', 'Adjusted', 'Employment_Consultant', 'Employment_PSFederal', 'Employment_PSLocal', 'Employment_PSState', 'Employment_Private', 'Employment_SelfEmp', 'Employment_Unemployed', 'Employment_Volunteer', 'Education_Associate', 'Education_Bachelor', 'Education_College', 'Education_Doctorate', 'Education_HSgrad', 'Education_Master', 'Education_Preschool', 'Education_Professional', 'Education_Vocational', 'Education_Yr10', 'Education_Yr11', 'Education_Yr12', 'Education_Yr5t6', 'Education_Yr7t8', 'Education_Yr9', 'Marital_Absent', 'Marital_Divorced', 'Marital_Married', 'Marital_Married-spouse-absent', 'Marital_Unmarried', 'Marital_Widowed', 'Occupation_Cleaner', 'Occupation_Clerical', 'Occupation_Executive', 'Occupation_Farming', 'Occupation_Machinist', 'Occupation_Professional', 'Occupation_Repair', 'Occupation_Sales', 'Occupation_Service', 'Occupation_Support', 'Occupation_Transport', 'Sex_Female', 'Sex_Male', 'Accounts_Cuba', 'Accounts_England', 'Accounts_Germany', 'Accounts_India', 'Accounts_Indonesia', 'Accounts_Iran', 'Accounts_Ireland', 'Accounts_Jamaica', 'Accounts_Malaysia', 'Accounts_Mexico', 'Accounts_Philippines', 'Accounts_Portugal', 'Accounts_UnitedStates', 'Accounts_Vietnam'] 
#if you need filter df by columns 
df = df[columns] 

oder Filter array durch Entfernen ersten Punkt (ID sein muss erstes Element von header):

columns = header[1:] 
print columns 
['Age' 'Income' 'Deductions' 'Hours' 'Adjustment' 'Adjusted' 
'Employment_Consultant' 'Employment_PSFederal' 'Employment_PSLocal' 
'Employment_PSState' 'Employment_Private' 'Employment_SelfEmp' 
'Employment_Unemployed' 'Employment_Volunteer' 'Education_Associate' 
'Education_Bachelor' 'Education_College' 'Education_Doctorate' 
'Education_HSgrad' 'Education_Master' 'Education_Preschool' 
'Education_Professional' 'Education_Vocational' 'Education_Yr10' 
'Education_Yr11' 'Education_Yr12' 'Education_Yr5t6' 'Education_Yr7t8' 
'Education_Yr9' 'Marital_Absent' 'Marital_Divorced' 'Marital_Married' 
'Marital_Married-spouse-absent' 'Marital_Unmarried' 'Marital_Widowed' 
'Occupation_Cleaner' 'Occupation_Clerical' 'Occupation_Executive' 
'Occupation_Farming' 'Occupation_Machinist' 'Occupation_Professional' 
'Occupation_Repair' 'Occupation_Sales' 'Occupation_Service' 
'Occupation_Support' 'Occupation_Transport' 'Sex_Female' 'Sex_Male' 
'Accounts_Cuba' 'Accounts_England' 'Accounts_Germany' 'Accounts_India' 
'Accounts_Indonesia' 'Accounts_Iran' 'Accounts_Ireland' 'Accounts_Jamaica' 
'Accounts_Malaysia' 'Accounts_Mexico' 'Accounts_Philippines' 
'Accounts_Portugal' 'Accounts_UnitedStates' 'Accounts_Vietnam'] 

#if you need filter df by columns 
df = df[columns] 

Aber wenn Sie entfernen müssen Spalte ID verwenden drop:

df = df.drop('ID', axis=1) 
Verwandte Themen