सूची सूचकांक के आधार पर पंडों की पंक्तियों का चयन करें


105

मेरे पास एक डेटाफ्रेम डीएफ है:

   20060930  10.103       NaN     10.103   7.981
   20061231  15.915       NaN     15.915  12.686
   20070331   3.196       NaN      3.196   2.710
   20070630   7.907       NaN      7.907   6.459

फिर मैं कुछ अनुक्रम संख्याओं के साथ पंक्तियों का चयन करना चाहता हूं जो एक सूची में संकेतित हैं, मान लीजिए कि [1,3] है, फिर छोड़ दिया गया:

   20061231  15.915       NaN     15.915  12.686
   20070630   7.907       NaN      7.907   6.459

कैसे या क्या कार्य कर सकते हैं?

जवाबों:


130
List = [1, 3]
df.ix[List]

चाल चलनी चाहिए! जब मैं डेटा फ्रेम के साथ इंडेक्स करता हूं तो मैं हमेशा .ix () विधि का उपयोग करता हूं। इसका इतना आसान और अधिक लचीला ...

अद्यतन यह अब अनुक्रमण के लिए स्वीकृत विधि नहीं है। ixविधि मान्य नहीं है। .ilocपूर्णांक आधारित अनुक्रमण के लिए और .locलेबल आधारित अनुक्रमण के लिए उपयोग करें ।


14
यह अब पदावनत हो गया है, .iloc का उपयोग
स्थितिगत

86

आप iloc का उपयोग भी कर सकते हैं:

df.iloc[[1,3],:]

यदि आपके डेटाफ्रेम में अनुक्रमणिका पूर्व संगणना के कारण पंक्तियों के क्रम के अनुरूप नहीं है तो यह काम नहीं करेगा। उस मामले में उपयोग करें:

df.index.isin([1,3])

... जैसा कि अन्य प्रतिक्रियाओं में सुझाया गया है।


61

दूसरा तरीका (हालाँकि यह एक लंबा कोड है), लेकिन यह उपरोक्त कोडों की तुलना में तेज़ है। % समय कार्य का उपयोग करके इसे जांचें:

df[df.index.isin([1,3])]

पुनश्च: आप इसका कारण जानते हैं

यहां छवि विवरण दर्ज करें


1
df.index.get_level_values(0).isinमल्टीएंडेक्स के लिए उपयोग
CiranWelsh

4

बड़े डेटासेट के लिए, यह केवल skiprowsपैरामीटर के माध्यम से चयनित पंक्तियों को पढ़ने के लिए मेमोरी कुशल है ।

उदाहरण

pred = lambda x: x not in [1, 3]
pd.read_csv("data.csv", skiprows=pred, index_col=0, names=...)

यह अब एक फ़ाइल से एक DataFrame लौटाएगा जो 1 और 3 को छोड़कर सभी पंक्तियों को छोड़ देता है।


विवरण

से डॉक्स :

skiprows : सूची-जैसा या पूर्णांक या कॉल करने योग्य, डिफ़ॉल्ट None

...

यदि कॉल करने योग्य है, तो पंक्ति सूचकांकों के खिलाफ कॉल करने योग्य फ़ंक्शन का मूल्यांकन किया जाएगा, यह सच है कि यदि पंक्ति को छोड़ दिया जाना चाहिए और अन्यथा गलत होना चाहिए। मान्य कॉल करने योग्य तर्क का एक उदाहरण होगाlambda x: x in [0, 2]

यह सुविधा संस्करण पांडा 0.20.0+ में काम करती है। संबंधित समस्या और संबंधित पोस्ट भी देखें ।

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