Hapus tiga baris pertama dari kerangka data dalam panda


177

Saya perlu menghapus tiga baris pertama dari dataframe di panda.

Saya tahu df.ix[:-1]akan menghapus baris terakhir, tetapi saya tidak tahu cara menghapus n baris pertama.


Untuk read_csv / read_html Anda dapat menggunakan misal header=3argumen konstruktor yang akan menetapkan baris itu sebagai baris header: stackoverflow.com/a/51822697/191246
ccpizza

Jawaban:


263

Gunakan iloc:

df = df.iloc[3:]

akan memberi Anda df baru tanpa tiga baris pertama.


1
bukankah itu menghapus 4 baris pertama, bukan 3 baris pertama dalam pertanyaan asli?
tagoma

6
Tidak, tidak. Posisi awal irisan selalu disertakan.
bdiamante

Adakah yang tahu cara melakukan ini dalam groupby()? Ini berfungsi tetapi mengembalikan kolom duplikat dalam indeksdf=pd.DataFrame({'v':np.arange(10).tolist()*2,'g':['a']*10+['b']*10});df.groupby('g').apply(lambda x: x.iloc[3:])
citynorman

Jadi, jika Anda ingin menghapus dari baris 3 ke baris 9, misalnya, bagaimana Anda melakukannya? df=df.iloc[3:9]?
MK

1
@MK jika menggunakan pendekatan ini, Anda dapat menggunakan ini dalam kombinasi dengan pd.concat(). Sesuatu seperti df2 = pd.concat([df.iloc[:3],df.iloc[10:]]),.
bdiamante

100

Saya pikir cara yang lebih eksplisit untuk melakukan ini adalah dengan menggunakan drop.

Sintaksnya adalah:

df.drop(label)

Dan seperti yang ditunjukkan oleh @tim dan @ChaimG, ini dapat dilakukan di tempat:

df.drop(label, inplace=True)

Salah satu cara untuk mengimplementasikan ini adalah:

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

Dan penggunaan "di tempat" yang lain:

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

5
dropbahkan dapat dihitung di tempat (tanpa tugas tambahan). Lebih cepat dan lebih sederhana!
tim

1
Untuk memperluas ide Tim, Contoh:df.drop(label, inplace=True)
ChaimG

Karena indeks 0, saya yakin saran implementasi akan menghapus 4 baris.
Daniel Morgan

1
@DanielMorgan Itu tidak terjadi karena rentang python setengah terbuka. Mengapa demikian, adalah pertanyaan lain. Lihat stackoverflow.com/questions/4504662/… atau quora.com/…
drexiya

2
@tim, menurut ini , inplaceoperasi tidak lebih cepat. Juga, lebih sederhana adalah masalah pendapat: Saya merasa lebih mudah dibaca ketika kode tidak memiliki inplaceparameter.
toto_tico


6

Anda bisa menggunakan irisan python, tetapi perhatikan itu bukan di tempat.

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

apa artinya tidak di tempat pandas?
cryanbhu

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

Panda menggunakan penomoran berbasis nol, jadi 0 adalah baris pertama, 1 adalah baris kedua dan 2 adalah baris ketiga.


4

Cara sederhana adalah dengan menggunakan tail (-n) untuk menghapus n baris pertama

df=df.tail(-3)


0

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

atau jika Anda ingin melakukannya dalam kerangka data yang ada

cukup lakukan perintah berikut

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.