Ich muss die ersten drei Zeilen eines Datenrahmens in Pandas löschen.
Ich weiß df.ix[:-1]
, dass die letzte Zeile entfernt werden würde, aber ich kann nicht herausfinden, wie die ersten n Zeilen entfernt werden.
Ich muss die ersten drei Zeilen eines Datenrahmens in Pandas löschen.
Ich weiß df.ix[:-1]
, dass die letzte Zeile entfernt werden würde, aber ich kann nicht herausfinden, wie die ersten n Zeilen entfernt werden.
Antworten:
groupby()
? Dies funktioniert, gibt aber doppelte Spalten im Index zurückdf=pd.DataFrame({'v':np.arange(10).tolist()*2,'g':['a']*10+['b']*10});df.groupby('g').apply(lambda x: x.iloc[3:])
df=df.iloc[3:9]
?
pd.concat()
. So etwas wie , df2 = pd.concat([df.iloc[:3],df.iloc[10:]])
.
Ich denke, ein expliziterer Weg, dies zu tun, ist die Verwendung von drop.
Die Syntax lautet:
df.drop(label)
Und wie von @tim und @ChaimG hervorgehoben, kann dies vor Ort erfolgen:
df.drop(label, inplace=True)
Eine Möglichkeit, dies umzusetzen, könnte sein:
df.drop(df.index[:3], inplace=True)
Und noch eine "an Ort und Stelle" Verwendung:
df.drop(df.head(3).index, inplace=True)
drop
kann sogar vor Ort berechnet werden (ohne zusätzliche Zuordnung). Schneller und einfacher!
df.drop(label, inplace=True)
Sie können Python-Slicing verwenden, beachten Sie jedoch, dass es nicht vorhanden ist.
In [15]: import pandas as pd
In [16]: import numpy as np
In [17]: df = pd.DataFrame(np.random.random((5,2)))
In [18]: df
Out[18]:
0 1
0 0.294077 0.229471
1 0.949007 0.790340
2 0.039961 0.720277
3 0.401468 0.803777
4 0.539951 0.763267
In [19]: df[3:]
Out[19]:
0 1
3 0.401468 0.803777
4 0.539951 0.763267
pandas
?
df.drop(df.index[[0,2]])
Pandas verwendet eine auf Null basierende Nummerierung, also ist 0 die erste Zeile, 1 die zweite Zeile und 2 die dritte Zeile.
inp0 = pd.read_csv ("bank_marketing_updated_v1.csv", skiprows = 2)
oder wenn Sie in vorhandenen Datenrahmen tun möchten
Führen Sie einfach den folgenden Befehl aus
header=3
Konstruktorargument verwenden, das diese Zeile als Kopfzeile festlegt