删除pandas中数据帧的前三行

Nil*_*age 140 python pandas

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

我知道df.ix[:-1]会删除最后一行,但我无法弄清楚如何删除前n行.

bdi*_*nte 199

用途iloc:

df = df.iloc[3:]
Run Code Online (Sandbox Code Playgroud)

会给你一个没有前三行的新df.

  • 不,它没有.始终包括切片的起始位置. (5认同)

dre*_*iya 94

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

语法是:

df.drop(label)
Run Code Online (Sandbox Code Playgroud)

正如@tim和@ChaimG所指出的,这可以就地完成:

df.drop(label, inplace=True)
Run Code Online (Sandbox Code Playgroud)

实现这一点的一种方法可能是:

df.drop(df.index[:3], inplace=True)
Run Code Online (Sandbox Code Playgroud)

另一个"就地"使用:

df.drop(df.head(3).index, inplace=True)
Run Code Online (Sandbox Code Playgroud)

  • `drop`甚至可以就地计算(无需额外分配).更快更简单! (5认同)
  • @tim,根据 [this](/sf/ask/1577261171/#22533110),`inplace` 操作不是快点。此外,更简单是一个意见问题:我发现当代码没有 `inplace` 参数时更容易阅读。 (2认同)

小智 8

df.drop(df.index[[0,2]])
Run Code Online (Sandbox Code Playgroud)

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


小智 8

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

df=df.tail(-3)


176*_*ing 7

df = df.iloc[n:]
Run Code Online (Sandbox Code Playgroud)

n删除前n行。


bea*_*rdc 6

您可以使用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
Run Code Online (Sandbox Code Playgroud)


Rah*_*dia 5

inp0= pd.read_csv("bank_marketing_updated_v1.csv",skiprows=2)

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

只需执行以下命令