2015-09-23 10 views
6

C'è un modo per dividere un frame di dati panda in base al nome della colonna? Ad esempio, il frame di dati ha le seguenti colonne df = ['A_x', 'B_x', 'C_x', 'A_y', 'B_y', 'C_y'] e voglio creare due frame di dati X = ['A_x', 'B_x', 'C_x'] e Y = ['A_y', 'B_y', 'C_y'].Dividere il frame dei dati dei panda in base al nome della colonna

So che c'è la possibilità di fare questo:

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

, ma questo non sarebbe l'ideale come nel mio caso ho 2200 colonne in df. C'è una soluzione più elegante?

+0

è il numero di divisioni (ad esempio, X e Y nel tuo caso) limitata? – joris

+0

@joris si. Nel mio caso ho colonne xey uguali e ho bisogno di dividere in due partizioni (una con la xe l'altra con y) – Segmented

+0

non è necessario, solo il mascheramento semplice farà: ie. 'x = df [['A_x', 'B_x', 'C_x']]' – Anzel

risposta

10

Si potrebbe utilizzare 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') 

cede

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

grazie per la soluzione e la spiegazione! – Segmented

Problemi correlati