Pandalardaki veri çerçevesinin ilk üç satırını silme


177

Pandalarda bir veri çerçevesinin ilk üç satırını silmem gerekiyor.

df.ix[:-1]Son satırı kaldıracağını biliyorum , ama ilk n satırı nasıl kaldıracağımı anlayamıyorum.


Read_csv / read_html için, header=3bu satırı başlık satırı olarak ayarlayacak olan yapıcı bağımsız değişkenini kullanabilirsiniz : stackoverflow.com/a/51822697/191246
ccpizza

Yanıtlar:


263

Kullanım iloc:

df = df.iloc[3:]

ilk üç satır olmadan size yeni bir df verecektir.


1
orijinal sorunun ilk 3 satırı yerine ilk 4 satırı kaldırmaz mı?
tagoma

6
Hayır. Dilimin başlama konumu daima dahil edilir.
bdiamante

Herkes bunu bir a groupby(). Bu işe df=pd.DataFrame({'v':np.arange(10).tolist()*2,'g':['a']*10+['b']*10});df.groupby('g').apply(lambda x: x.iloc[3:])
yarar

Örneğin, satır 3'ten satır 9'a silmek isterseniz, bunu nasıl yapardınız? df=df.iloc[3:9]?
MK

1
@MK bu yaklaşımı kullanıyorsanız, bunu ile birlikte kullanabilirsiniz pd.concat(). Gibi bir şey df2 = pd.concat([df.iloc[:3],df.iloc[10:]]).
bdiamante

100

Bunu yapmanın daha açık bir yolunun damla kullanmak olduğunu düşünüyorum.

Sözdizimi:

df.drop(label)

Ve @tim ve @ChaimG tarafından işaret edildiği gibi, bu yerinde yapılabilir:

df.drop(label, inplace=True)

Bunu uygulamanın bir yolu şunlar olabilir:

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

Ve başka bir "yerinde" kullanın:

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

5
dropyerinde hesaplanabilir (ekstra görev olmadan). Daha hızlı ve daha basit!
tim

1
Tim'in fikrini genişletmek için, Örnek:df.drop(label, inplace=True)
ChaimG

İndeks 0 nedeniyle, uygulama önerisinin 4 satırı sileceğine inanıyorum.
Daniel Morgan

1
@DanielMorgan Python aralıkları yarı açık olduğu için durum böyle değil. Bunun nedenine gelince, başka bir soru. Bkz. Stackoverflow.com/questions/4504662/… veya quora.com/…
drexiya

2
@tim göre bu , inplaceoperasyonlar değil daha hızlı. Ayrıca, daha basit bir görüş meselesi: Kodun inplaceparametreleri olmadığında okumayı daha kolay buluyorum .
toto_tico


6

Python dilimlemeyi kullanabilirsiniz, ancak yerinde olmadığını unutmayın.

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

yerinde ne anlama gelmez pandas?
cryanbhu

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

Pandalar sıfır tabanlı numaralandırma kullanır, bu nedenle 0 ilk satır, 1 ikinci satır ve 2 üçüncü satırdır.


4

Basit bir yol, ilk n satırı kaldırmak için kuyruk (-n) kullanmaktır

df=df.tail(-3)


0

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

veya mevcut veri çerçevesinde yapmak istiyorsanız

sadece aşağıdaki komutu yap

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.