Python 删除数据框中的前三行
我需要删除pandas中数据帧的前三行 我知道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[
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]])