मेरे पास एक पांडा श्रृंखला है, जैसा कि नीचे दिखाया गया है।

vol = pd.Series([1,0,-3,2,5],index=['Jan, 15','Oct, 17','Apr, 18','Sep, 19', 'Jan, 18'])    
print(vol)
    Jan, 15    1
    Oct, 17    0
    Apr, 18   -3
    Sep, 19    2
    Jan, 18    5
    dtype: int64

अगर मुझे किसी ज्ञात index के साथ एक तत्व छोड़ना है, तो मैं .drop() फ़ंक्शन, लेकिन यहां मुझे index के बारे में पता होना चाहिए। मैं उन तत्वों का पता कैसे लगा सकता हूँ जिनकी अनुक्रमणिका Jan से शुरू होती है? मुझे निम्नलिखित चाहिए -

print(vol)
    Oct, 17    0
    Apr, 18   -3
    Sep, 19    2
    dtype: int64

समारोह .filter() करीब था, उदाहरण के लिए -

print(vol.filter(like='Jan'))
    Jan, 15    1
    Jan, 18    5
    dtype: int64

लेकिन, vol.filter(like != 'Jan') काम नहीं करता।

3
cph_sto 21 नवम्बर 2019, 17:21

2 जवाब

सबसे बढ़िया उत्तर

आपने पहले ही सभी टुकड़ों का उल्लेख कर दिया है, आप बस यह कर सकते हैं:

vol.drop(vol.filter(like='Jan').index)
4
Quang Hoang 21 नवम्बर 2019, 17:27

boolean indexing का उपयोग < के साथ करें a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.startswith.html" rel="nofollow noreferrer">Series.str.startswith और उल्टा मुखौटा ~ द्वारा:

s = vol[~vol.index.str.startswith('Jan')]
print (s)
Oct, 17    0
Apr, 18   -3
Sep, 19    2
dtype: int64

अनुक्रमणिका में चेक मानों के लिए (न केवल प्रारंभ स्थिति) Series.str.contains:

s = vol[~vol.index.str.contains('Jan')]
print (s)
Oct, 17    0
Apr, 18   -3
Sep, 19    2
dtype: int64

filter के साथ वैकल्पिक:

s = vol.filter(regex=r'^(?!.*Jan).*$')
print (s)
Oct, 17    0
Apr, 18   -3
Sep, 19    2
dtype: int64
4
jezrael 21 नवम्बर 2019, 17:23