2017-12-07 5 views
1

Wie lösche ich eine Spalte aus einem DataFrame? Ich weiß, dass diese Daten nicht reproduzierbar sind, da ich eine CSV-Datei habe und ich versuche, einen Pandas-Datenrahmen zu erstellen, um etwas zu streiten.Python Pandas Drop Dataframe

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

df = pd.read_csv('C:\LoadProfiles\CSV\WillBaySchl 2013_2014 KW.csv') 

print(df) 

Dies kehrt den Kopf/Schwanz und: [34944 rows x 3 columns]

pos0 = 0 
pos1 = 1 
pos2 = 2 

colname = df.columns[pos0] 
print(colname) 

Diese zurückkehren wird: Meter ID (I diese Spalte/Datenrahmen fallen wollen)

colname = df.columns[pos1] 
print(colname) 

Diese zurückkehren: Date/Time (Ich möchte, dass dies der pd-Datenrahmenindex ist)

colname = df.columns[pos2] 
print(colname) 

Dies wird zurückkehren: KW(ch: 1 set:0) (Dies sind die Daten, die ich will "kW" umbenannt und einige Querelen ...)

Wenn ich diesen Code unten versuchen:

df = pd.DataFrame.drop(['Meter ID'], axis=1) 

print(df) 

Python Rück den Fehler: TypeError: drop() missing 1 required positional argument: 'labels'

Wenn ich diesen Code unten versuchen:

df = pd.DataFrame.drop(columns=['Meter ID']) 
print(df) 

Python wird den Fehler zurück: TypeError: drop() got an unexpected keyword argument 'columns'

Jede Hilfe wird sehr geschätzt ...

+2

Sie wahrscheinlich eine Pandas 0.21 vor- haben, wo die Säulen kw eingeführt wurde. Überprüfen Sie Ihre Version und verwenden Sie stattdessen "Labels", gekoppelt mit "axis = 1". – ako

+2

'pd.DataFrame.drop (['Meter ID'], Achse = 1)' Sie rufen die Methode für den DataFrame-Konstruktor auf, so dass das erste Positionsargument "self" ist. Verwenden Sie es für eine Instanz (zum Beispiel 'df'). – ayhan

+0

Kann ich wiederholen, was du mit 'self' meinst? Ich verstehe nicht, wie man das bei Pandas einsetzt. Danke – HenryHub

Antwort

2

Wenn ich verstehe, Recht auf Spalte löschen (einzeln), die Sie verwenden sollten:

df = pd.DataFrame.drop('Meter ID', axis=1) 

Für mehr als 1 Säule:

df = pd.DataFrame.drop(['Meter ID', 'abc'], axis=1) 

Unterschied ist in eckigen Klammern [].

das Ganze löschen df Sie entweder verwenden können (wie bereits erwähnt):

del df 

oder

df = None 
1

Nach Ihrer Frage zu lesen, was ich verstehe, ist, dass Sie Spalte ['Meter ID'] in Ihren df = pd.read_csv('C:\LoadProfiles\CSV\WillBaySchl 2013_2014 KW.csv') Pandas Datenrahmen fallen wollten. Ich gehe davon aus, dass Sie Spaltenname ['Meter ID'] wie diese in Ihrem Dataframe und auch als Header in Ihrer CSV-Datei haben.

>>> df.dtypes 
Meter ID   int64 
someothercolumn int64 
dtype: object 

für die man einfach diesen Code verwenden kann,

del df['Meter ID'] 

Nun, wenn Sie Sie Gesamt-Datenrahmen löschen wollten einfach diesen Code verwenden können,

df=None 
1

eine Spalte von Datenrahmen fallen zu lassen, mehr

df = df.drop('Meter ID', axis=1) 

Tropfen als eine Spalte auf einmal,

df = df.drop(['Meter ID', 'SomethingElse'], axis=1) 

Weitere pandas.DataFrame.drop