ลบสามแถวแรกของ dataframe ในนุ่น


177

ฉันต้องลบสามแถวแรกของ dataframe ในนุ่น

ฉันรู้ว่าdf.ix[:-1]จะลบแถวสุดท้าย แต่ฉันไม่สามารถหาวิธีลบแถวแรกได้


สำหรับ read_csv / read_html คุณสามารถใช้เช่นheader=3อาร์กิวเมนต์ตัวสร้างซึ่งจะตั้งค่าแถวนั้นเป็นแถวส่วนหัว: stackoverflow.com/a/51822697/191246
ccpizza

คำตอบ:


263

การใช้iloc:

df = df.iloc[3:]

จะให้ df ใหม่โดยไม่มีสามแถวแรก


1
ไม่ได้ลบ 4 แถวแรกแทน 3 แถวแรกในคำถามเดิมหรือไม่
tagoma

6
ไม่มันไม่ใช่ ตำแหน่งเริ่มต้นของชิ้นรวมอยู่เสมอ
bdiamante

ทุกคนรู้วิธีการทำเช่นนี้ใน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)

วิธีหนึ่งในการดำเนินการนี้อาจเป็น:

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

และอีกการใช้งาน "ในสถานที่":

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

5
dropสามารถคำนวณได้แม้ในที่ (ไม่มีการมอบหมายพิเศษ) เร็วขึ้นและง่ายขึ้น!
ทิม

1
หากต้องการขยายความคิดของทิมตัวอย่าง:df.drop(label, inplace=True)
ChaimG

เนื่องจากดัชนี 0 ฉันเชื่อว่าคำแนะนำการใช้งานจะลบ 4 แถว
Daniel Morgan

1
@DanielMorgan นั่นไม่ใช่กรณีที่เป็นช่วงหลามเปิดครึ่ง สำหรับสาเหตุนั้นคือคำถามอื่น ดูstackoverflow.com/questions/4504662/…หรือquora.com/…
drexiya

2
@ Tim ตามนี้ , inplaceการดำเนินงานไม่ได้เร็วขึ้น นอกจากนี้ความเรียบง่ายเป็นเรื่องของความเห็น: ฉันคิดว่ามันง่ายต่อการอ่านเมื่อโค้ดไม่มีinplaceพารามิเตอร์
toto_tico


6

คุณสามารถใช้การแบ่งแบบหลาม แต่โปรดทราบว่าไม่ใช่การใช้งานแบบแทน

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

สิ่งที่ไม่ได้หมายถึงอะไรในสถานที่pandas?
cryanbhu

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

Pandas ใช้การกำหนดตัวเลขตามศูนย์ดังนั้น 0 คือแถวแรก 1 คือแถวที่สองและ 2 คือแถวที่สาม



0

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

หรือถ้าคุณต้องการที่จะทำใน dataframe ที่มีอยู่

เพียงทำตามคำสั่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.