2013-02-19 29 views
6

मान लीजिए कि df एक pandas डेटाफ़्रेम है। मैं इसे कुछ मानदंडों के अनुसार दो डेटाफ्रेम में विभाजित करना चाहता हूं। सबसे अच्छा तरीका है मैं ऐसा करने के लिए मिल गया है की तरहएक बूलियन मानदंड के अनुसार डेटाफ्रेम कैसे विभाजित करें?

df0, df1 = [v for _, v in df.groupby(df['class'] != 'special')] 

ऊपर के उदाहरण में कुछ, कसौटी groupby विधि करने के लिए तर्क है। परिणामी df0 में उप-डेटाफ्रेम शामिल है जहां class फ़ील्ड में मान 'special', और df1 मूल रूप से df0 का पूरक है। (दुर्भाग्य से, इस निर्माण के साथ, आइटम से मिलकर उप dataframe कि कसौटी पहले लौटा दिए जाते हैं असफल है, जो सहज नहीं है।)

ऊपर निर्माण दोष यह है कि यह विशेष रूप से पठनीय, निश्चित रूप से नहीं नहीं दे रहा है के रूप में पठनीय के रूप में, उदाहरण के लिए, कुछ काल्पनिक splitby विधि की तरह

df0, df1 = df.splitby(df['class'] == 'special') 

इस तरह एक dataframe बंटवारे के बाद से कुछ मैं अक्सर क्या करने की जरूरत है, मैं समझ निर्मित एक समारोह, या शायद एक स्थापित मुहावरा हो सकता है ऐसा करने के लिए। यदि हां, तो कृपया मुझे बताएं।

उत्तर

6

मुझे लगता है कि सबसे पठनीय तरीका यह है है:

df0 = df[df.class != 'special'] 
df1 = df[df.class == 'special'] 

मैं इस के लिए एक विशेष विधि भर में नहीं आए हैं ...

+3

मैं क्या कर सकता 'd ​​= dict (सूची (df.groupby (डीएफ ["वर्ग"]! = "बी"))) 'और फिर' डी [0] '/' डी [झूठी] 'और' डी [1] '/' डी [सही] का उपयोग करें इसके बजाए – DSM

+0

@DSM वास्तव में, ग्रुपबी शायद इसे स्टोर करने का एक बेहतर तरीका है (!) –

+0

@ एंडीहेडन: आपका क्या मतलब है? यह बहुत अच्छा होगा अगर कोई समूह की सामग्री को अपने (छद्म-) कुंजी से संबोधित कर सकता है, लेकिन यह काम नहीं करता है; यानी 'df.groupby (df.class! =' b ') [True]' एक त्रुटि फेंकता है ... मुझे नहीं पता कि समूहबी ऑब्जेक्ट को एक dict ... में परिवर्तित किए बिना इस तरह की चीज़ कैसे करें ... – kjo

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

  • कोई संबंधित समस्या नहीं^_^