पांडा में डेटाफ्रेम की पहली तीन पंक्तियों को हटा दें


177

मुझे पंडों में डेटाफ्रेम की पहली तीन पंक्तियों को हटाने की आवश्यकता है।

मुझे पता है df.ix[:-1]कि अंतिम पंक्ति को हटा दिया जाएगा, लेकिन मैं यह पता नहीं लगा सकता कि पहली n पंक्तियों को कैसे हटाया जाए।


Read_csv / read_html के लिए आप उदा। header=3कंस्ट्रक्टर तर्क का उपयोग कर सकते हैं जो उस पंक्ति को हेडर पंक्ति के रूप में सेट करेगा: stackoverflow.com/a/51822697/191246
ccpizza

जवाबों:


263

उपयोग करें iloc:

df = df.iloc[3:]

पहली तीन पंक्तियों के बिना आपको एक नया df देगा।


1
क्या मूल प्रश्न में पहली 3 पंक्तियों के बजाय पहली 4 पंक्तियों को हटा दें?
टैगोमा

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]?
एमके

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 पंक्तियों को हटा देगा।
डेनियल मॉर्गन

1
@ डैनियल मॉर्गन ऐसा नहीं है, क्योंकि अजगर रेंज आधा खुला है। जैसा कि क्यों है, एक और सवाल है। देखें stackoverflow.com/questions/4504662/... या quora.com/...
drexiya

2
@tim, के अनुसार इस , inplaceसंचालन नहीं तेजी से कर रहे हैं। इसके अलावा, सरल राय की बात है: मुझे यह पढ़ना आसान लगता है जब कोड में inplaceपैरामीटर नहीं हैं ।
toto_tico

9
df = df.iloc[n:]

n पहली n पंक्तियों को गिराता है।


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]])

पंडास शून्य आधारित नंबरिंग का उपयोग करता है, इसलिए 0 पहली पंक्ति है, 1 दूसरी पंक्ति है और 2 तीसरी पंक्ति है।


4

पहली एन पंक्तियों को हटाने के लिए एक सरल तरीका पूंछ (-n) का उपयोग करना है

df=df.tail(-3)


0

inp0 = pd.read_csv ("bank_marketing_updated_v1.csv", स्किप = 2)

या यदि आप मौजूदा डेटाफ़्रेम में करना चाहते हैं

बस निम्नलिखित आदेश है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.