パンダのデータフレームの最初の3行を削除する


177

パンダのデータフレームの最初の3行を削除する必要があります。

df.ix[:-1]最後の行を削除することはわかっていますが、最初のn行を削除する方法がわかりません。


read_csv / read_htmlのためには、例えば使用することができますheader=3ヘッダー行としてその行を設定しますコンストラクタの引数を:stackoverflow.com/a/51822697/191246
ccpizza

回答:


261

使用iloc

df = df.iloc[3:]

最初の3行のない新しいdfが得られます。


1
元の質問の最初の3行ではなく、最初の4行を削除しませんか?
tagoma 2016年

6
いいえ、ありません。スライスの開始位置は常に含まれます。
bdiamante 2017年

誰でもこれを行う方法を知っていgroupby()ますか?これは機能しますが、インデックスに重複した列が返されますdf=pd.DataFrame({'v':np.arange(10).tolist()*2,'g':['a']*10+['b']*10});df.groupby('g').apply(lambda x: x.iloc[3:])
citynorman

たとえば、3行目から9行目までを削除する場合、どのように実行しますか?df=df.iloc[3:9]
MKは

1
@MKこのアプローチを使用する場合、これをと組み合わせて使用​​できますpd.concat()。のようなものdf2 = pd.concat([df.iloc[:3],df.iloc[10:]])
bdiamante

100

これを行うためのより明確な方法は、ドロップを使用することだと思います。

構文は次のとおりです。

df.drop(label)

そして、@ timと@ChaimGで指摘されているように、これはインプレースで実行できます。

df.drop(label, inplace=True)

これを実装する1つの方法は次のとおりです。

df.drop(df.index[:3], inplace=True)

そして、もう1つの「インプレース」使用:

df.drop(df.head(3).index, inplace=True)

5
drop(追加の割り当てなしで)インプレースで計算することもできます。速くて簡単!
ティム2014年

1
ティムのアイデアをdf.drop(label, inplace=True)
さらに詳しく説明するには

インデックス0のため、実装の提案により4行が削除されると思います。
Daniel Morgan

1
@DanielMorgan Pythonの範囲が半分開いているため、そうではありません。それがなぜであるかについては、別の質問です。stackoverflow.com/questions/4504662/…またはquora.com/…を
drexiya

2
@timは、によると、このinplace操作は速くありません。また、単純なことは意見の問題ですinplace。コードにパラメーターがない場合は、読みやすくなります。
toto_tico 2017


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

in-placeとはどういう意味pandasですか?
cryanbhu

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

パンダはゼロベースの番号付けを使用するため、0は最初の行、1は2番目の行、2は3番目の行です。


4

簡単な方法は、tail(-n)を使用して最初のn行を削除することです

df=df.tail(-3)


0

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

または既存のデータフレームで実行したい場合

次のコマンドを実行するだけです

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.