2015-05-12 5 views
7

में कोई कॉलम मान बदलता है, मैं एक त्वरित स्क्रिप्ट लिखना चाहता हूं जो दो कॉलम के साथ एक सीएसवी फ़ाइल के माध्यम से चलाएगा और मुझे पंक्तियां प्रदान करेगी जिसमें स्तंभ बी में मान एक मान से दूसरे में स्विच हो:यह निर्धारित करना कि पैंडस डेटाफ्रेम

जैसे:

dataframe:

# | A | B 
--+-----+----- 
1 | 2 | 3 
2 | 3 | 3 
3 | 4 | 4 
4 | 5 | 4 
5 | 5 | 4 

मुझे बताओ होता है कि परिवर्तन पंक्ति 2 और पंक्ति 3 के बीच हुआ मैं जानता हूँ कि इन छोरों के लिए उपयोग कर मूल्यों को प्राप्त करने के लिए कैसे, लेकिन मैं उम्मीद कर रही थी वहाँ था एक और अधिक इस समस्या के करीब पाइथोनिक तरीका।

+0

खेद है कि आपको जब 'ए' एक ही पंक्ति पर नहीं के बराबर 'बी' करता है के लिए पूछ कर दिया जायेगा? – EdChum

+0

कोई खेद नहीं है कि मैं सिर्फ यह बताने में सक्षम हूं कि बी में कौन सी पंक्तियां बदलती हैं। ए में मान हैं जो मैं देखना चाहता हूं जब बी बदलता है लेकिन मेरे पास यह हिस्सा काम कर रहा है। (मैंने उम्मीदवार को यह स्पष्ट करने के लिए डीएफ अपडेट किया है) – badrobit

उत्तर

10

आप अंतर

> df['C'] = df['B'].diff() 
> print df 
    # A B C 
0 1 2 3 NaN 
1 2 3 3 0 
2 3 4 4 1 
3 4 5 4 0 
4 5 5 4 0 

> df_filtered = df[df['C'] != 0] 
> print df_filtered 
    # A B C 
2 3 4 4 1 

के लिए एक नया स्तंभ बना सकते हैं यह आपके लिए आवश्यक पंक्तियों

+1

तारों के अंतर के साथ आप इसे कैसे कर सकते हैं? ऐसा लगता है कि यह diff() केवल संख्याओं के लिए काम करता है। मैं सभी तारों को संख्याओं में परिवर्तित कर सकता हूं ... – amc

+1

@amc https://stackoverflow.com/a/40348884/1451311 पर एक नज़र डालें – mgilbert

संबंधित मुद्दे