Python 删除数据框中的前三行

Python 删除数据框中的前三行,python,pandas,Python,Pandas,我需要删除pandas中数据帧的前三行 我知道df.ix[:-1]会删除最后一行,但我不知道如何删除前n行。使用: df.drop(df.index[[0,2]]) 将为您提供一个没有前三行的新df。您可以使用python切片,但请注意它没有到位 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[

我需要删除pandas中数据帧的前三行

我知道
df.ix[:-1]
会删除最后一行,但我不知道如何删除前n行。

使用:

df.drop(df.index[[0,2]])

将为您提供一个没有前三行的新df。

您可以使用python切片,但请注意它没有到位

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

我认为更明确的方法是使用drop

语法是:

df.drop(label)
正如@tim和@ChaimG所指出的,这可以在适当的地方完成:

df.drop(label, inplace=True)
实现这一点的一种方法可以是:

df.drop(df.index[:3], inplace=True)
以及另一种“就地”用途:

n删除前n行

df.drop(df.index[[0,2]])

Pandas使用基于零的编号,因此0是第一行,1是第二行,2是第三行。

一种简单的方法是使用tail(-n)删除前n行

df=df.tail(-3)

inp0=pd.read\u csv(“银行营销更新的v1.csv”,skiprows=2)

或者,如果您想在现有数据帧中执行此操作


只需执行以下命令

drop
甚至可以就地计算(无需额外分配)。更快更简单!为了扩展Tim的想法,例如:
df.drop(label,inplace=True)
由于索引为0,我相信实现建议将删除4行。@但事实并非如此,因为python范围是半开放的。至于为什么会这样,这是另一个问题。请参阅或@tim,根据,
in place
操作不会更快。此外,更简单是一个意见问题:我发现当代码没有
in place
参数时更容易阅读。这不是删除了原始问题中的前4行而不是前3行吗?不,不是。始终包括切片的起始位置。有人知道如何在
groupby()中执行此操作吗?这可以工作,但在索引
df=pd.DataFrame({'v':np.arange(10.tolist()*2,'g':['a']*10+['b']*10})中返回重复的列;df.groupby('g').apply(lambda x:x.iloc[3:])
因此,如果您想从第3行删除到第9行,您将如何执行
df=df.iloc[3:9]
?@M.K如果使用这种方法,您可以将其与
pd.concat()结合使用。类似于,
df2=pd.concat([df.iloc[:3],df.iloc[10:])
。在
pandas
中,什么是不适当的意思?他们讨论的是在pandas中的许多方法中显示的
inplace
参数。对于read\u csv/read\u html,您可以使用例如
header=3
构造函数参数,该参数将该行设置为头行:
df = df.iloc[n:]
df.drop(df.index[[0,2]])