2012-08-09 9 views
21

द्वारा स्लाइस पांडस डेटाफ्रेम मैं एचडी-फाइल से लोड किए गए सर्वेक्षण डेटा के साथ hdf = pandas.HDFStore('Survey.h5') पांडा पैकेज के माध्यम से काम कर रहा हूं। इस DataFrame के भीतर, सभी पंक्तियां एक सर्वेक्षण के परिणाम हैं, जबकि कॉलम एक ही सर्वेक्षण के भीतर सभी प्रश्नों के उत्तर हैं।पंक्ति

मैं इस डेटासेट को एक छोटे से DataFrame पर कम करने का लक्ष्य रख रहा हूं जिसमें केवल एक निश्चित प्रश्न पर एक निश्चित चित्रित उत्तर के साथ पंक्तियां शामिल हैं, यानी इस कॉलम में सभी समान मूल्यों के साथ। मैं इस शर्त के साथ सभी पंक्तियों के सूचकांक मान निर्धारित करने में सक्षम हूं, लेकिन मुझे यह नहीं पता कि इस पंक्तियों को हटाएं या केवल इन पंक्तियों के साथ एक नया डीएफ बनाएं।

उत्तर

32
In [36]: df 
Out[36]: 
    A B C D 
a 0 2 6 0 
b 6 1 5 2 
c 0 2 6 0 
d 9 3 2 2 

In [37]: rows 
Out[37]: ['a', 'c'] 

In [38]: df.drop(rows) 
Out[38]: 
    A B C D 
b 6 1 5 2 
d 9 3 2 2 

In [39]: df[~((df.A == 0) & (df.B == 2) & (df.C == 6) & (df.D == 0))] 
Out[39]: 
    A B C D 
b 6 1 5 2 
d 9 3 2 2 

In [40]: df.ix[rows] 
Out[40]: 
    A B C D 
a 0 2 6 0 
c 0 2 6 0 

In [41]: df[((df.A == 0) & (df.B == 2) & (df.C == 6) & (df.D == 0))] 
Out[41]: 
    A B C D 
a 0 2 6 0 
c 0 2 6 0 
+0

dataframe स्लाइस और कहने के लिए यह संभव है (ग = 5 या ग = 6) इस तरह: ---> df [((डीएफ.ए == 0) और (डीएफ.बी == 2) और (डीएफ.सी == 5 या 6) और (डीएफ.डी == 0))] – yoshiserry

+0

डीएफ [((डीएफ.ए = = 0) और (डीएफ.बी == 2) और डीएफ.सी.इसिन ([5, 6]) और (डीएफ.डी == 0))] या डीएफ [((डीएफ.ए == 0) और (df.b == 2) और ((df.C == 5) | (df.C == 6)) और (df.D == 0))] –

2

आप पहले से ही सूचकांक जानते हैं कि आप .loc उपयोग कर सकते हैं:

In [12]: df = pd.DataFrame({"a": [1,2,3,4,5], "b": [4,5,6,7,8]}) 

In [13]: df 
Out[13]: 
    a b 
0 1 4 
1 2 5 
2 3 6 
3 4 7 
4 5 8 

In [14]: df.loc[[0,2,4]] 
Out[14]: 
    a b 
0 1 4 
2 3 6 
4 5 8 

In [15]: df.loc[1:3] 
Out[15]: 
    a b 
1 2 5 
2 3 6 
3 4 7