2016-08-26 16 views
7

Chciałbym upuścić wszystkie dane w parsie danych, ale otrzymuję TypeError: drop() takes at least 2 arguments (3 given). Zasadniczo chcę pustą ramkę danych z tylko nagłówkami kolumn.Upuść wszystkie dane w pandasowej ramce danych

import pandas as pd 

web_stats = {'Day': [1, 2, 3, 4, 2, 6], 
      'Visitors': [43, 43, 34, 23, 43, 23], 
      'Bounce_Rate': [3, 2, 4, 3, 5, 5]} 
df = pd.DataFrame(web_stats) 

df.drop(axis=0, inplace=True) 
print df 
+3

lubię użytkownika @ ayhan rozwiązanie, ale myślę, że 'df = pd.DataFrame (kolumny)' = df.columns byłyby szybsze i bardziej wydajne ... – MaxU

+0

Zgadzam się z @ MaxU - w rzeczywistości jest około 100x szybszy (testowa ramka danych z 1M rzędami i 10 kolami) – exp1orer

+1

'df.iloc [0: 0]' jest w rzeczywistości szybsza niż konstrukcja df. Sądzę, że porównujesz to do upuszczania zamiast iloc? – ayhan

Odpowiedz

13

Musisz przekazać etykiety do upuszczenia.

df.drop(df.index, inplace=True) 

Domyślnie działa pod numerem axis=0.

Można osiągnąć to samo z

df.iloc[0:0] 

który jest o wiele bardziej efektywne.

3

Mój ulubiony:

df = df.iloc[0:0] 

Ale należy pamiętać df.index.max() będzie nan. Aby dodać elementy używam:

df.loc[0 if math.isnan(df.index.max()) else df.index.max() + 1] = data