Мені потрібно видалити перші три рядки фрейму даних у пандах.
Я знаю, df.ix[:-1]
що видалить останній ряд, але я не можу зрозуміти, як видалити перші n рядків.
Мені потрібно видалити перші три рядки фрейму даних у пандах.
Я знаю, df.ix[:-1]
що видалить останній ряд, але я не можу зрозуміти, як видалити перші n рядків.
Відповіді:
groupby()
? Це працює, але повертає дублікати стовпців у індексіdf=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()
. Що - щось на зразок df2 = pd.concat([df.iloc[:3],df.iloc[10:]])
.
Я думаю, що більш чіткий спосіб зробити це - використовувати drop.
Синтаксис:
df.drop(label)
І як вказували @tim та @ChaimG, це можна зробити на місці:
df.drop(label, inplace=True)
Одним із способів здійснення цього може бути:
df.drop(df.index[:3], inplace=True)
І ще одне використання "на місці":
df.drop(df.head(3).index, inplace=True)
drop
можна навіть обчислити на місці (без додаткового призначення). Швидше і простіше!
df.drop(label, inplace=True)
df = df.iloc[n:]
n випадає перших n рядів.
Можна використовувати нарізки пітона, але зауважте, що він не є на місці.
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]])
Панди використовують нульову нумерацію, тому 0 - це перший рядок, 1 - другий, а 2 - третій.
inp0 = pd.read_csv ("bank_marketing_update_v1.csv", skiprows = 2)
або якщо ви хочете зробити це в існуючому кадрі даних
просто виконайте наступну команду
header=3
конструктор аргумент , який буде встановлювати цей рядок як рядок заголовка: stackoverflow.com/a/51822697/191246