Muszę usunąć pierwsze trzy wiersze ramki danych w pandach.
Wiem, df.ix[:-1]
że usunąłbym ostatni wiersz, ale nie wiem, jak usunąć pierwsze n wierszy.
Muszę usunąć pierwsze trzy wiersze ramki danych w pandach.
Wiem, df.ix[:-1]
że usunąłbym ostatni wiersz, ale nie wiem, jak usunąć pierwsze n wierszy.
Odpowiedzi:
groupby()
? To działa, ale zwraca zduplikowane kolumny w indeksiedf=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()
. Coś w rodzaju df2 = pd.concat([df.iloc[:3],df.iloc[10:]])
.
Myślę, że bardziej wyraźnym sposobem na to jest użycie drop.
Składnia jest następująca:
df.drop(label)
Jak wskazali @tim i @ChaimG, można to zrobić na miejscu:
df.drop(label, inplace=True)
Jednym ze sposobów realizacji tego może być:
df.drop(df.index[:3], inplace=True)
I inne zastosowanie „na miejscu”:
df.drop(df.head(3).index, inplace=True)
drop
można nawet obliczyć na miejscu (bez dodatkowego przypisania). Szybciej i prościej!
df.drop(label, inplace=True)
df = df.iloc[n:]
n opuszcza pierwsze n wierszy.
Możesz użyć krojenia Pythona, ale pamiętaj, że nie jest to na miejscu.
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]])
Pandy używają numeracji od zera, więc 0 to pierwszy wiersz, 1 to drugi rząd, a 2 to trzeci wiersz.
inp0 = pd.read_csv ("bank_marketing_updated_v1.csv", skiprows = 2)
lub jeśli chcesz to zrobić w istniejącej ramce danych
po prostu wykonaj następujące polecenie
header=3
Argumentu konstruktora, który ustawi ten wiersz jako wiersz nagłówka: stackoverflow.com/a/51822697/191246