2015-09-23 10 views
6

पर आधारित पांडा डेटा फ्रेम को विभाजित करना कॉलम नाम के आधार पर एक पांडा डेटा फ्रेम को विभाजित करने का कोई तरीका है? उदाहरण के तौर पर डेटा फ्रेम में निम्नलिखित कॉलम df = ['A_x', 'B_x', 'C_x', 'A_y', 'B_y', 'C_y'] हैं और मैं दो डेटा फ्रेम X = ['A_x', 'B_x', 'C_x'] और Y = ['A_y', 'B_y', 'C_y'] बनाना चाहता हूं।कॉलम नाम

मुझे पता है कि यह करने के लिए एक संभावना है:

d = {'A': df.A_x, 'B': df.B_x, 'C': df.B_x} 
X = pd.DataFrame (data=d) 

लेकिन इस आदर्श मेरे मामले में के रूप में मैं df में 2200 स्तंभ नहीं होगा। क्या कोई और सुरुचिपूर्ण समाधान है?

+0

विभाजन की संख्या (उदाहरण के लिए एक्स और अपने मामले में वाई) सीमित है? – joris

+0

@ जोरिस हां। मेरे मामले में मेरे बराबर एक्स और वाई कॉलम हैं और मुझे दो विभाजनों में विभाजित करने की आवश्यकता है (एक एक्स के साथ और दूसरे के साथ वाई) – Segmented

+0

आपको बस इतना आसान मास्किंग करने की ज़रूरत नहीं है: यानी। 'x = df [['A_x', 'B_x', 'C_x']]' – Anzel

उत्तर

10

आप df.filter(regex=...) इस्तेमाल कर सकते हैं:

import numpy as np 
import pandas as pd 
df = pd.DataFrame(np.random.randn(2, 10), 
        columns='Time A_x A_y A_z B_x B_y B_z C_x C_y C-Z'.split()) 
X = df.filter(regex='_x') 
Y = df.filter(regex='_y') 

पैदावार

In [15]: X 
Out[15]: 
     A_x  B_x  C_x 
0 -0.706589 1.031368 -0.950931 
1 0.727826 0.879408 -0.049865 

In [16]: Y 
Out[16]: 
     A_y  B_y  C_y 
0 -0.663647 0.635540 -0.532605 
1 0.326718 0.189333 -0.803648 
+0

समाधान और स्पष्टीकरण के लिए धन्यवाद! – Segmented

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