2015-09-23 41 views
6

Có cách nào để tách khung dữ liệu gấu trúc dựa trên tên cột không? Ví dụ xem xét khung dữ liệu có các cột sau đây df = ['A_x', 'B_x', 'C_x', 'A_y', 'B_y', 'C_y'] và tôi muốn tạo hai khung dữ liệu X = ['A_x', 'B_x', 'C_x']Y = ['A_y', 'B_y', 'C_y'].Chia khung dữ liệu gấu trúc dựa trên tên cột

Tôi biết có một khả năng để làm điều này:

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

nhưng điều này sẽ không được lý tưởng như trong trường hợp của tôi, tôi có 2200 cột trong df. Có một giải pháp thanh lịch hơn không?

+0

Là số chia (ví dụ như x và y trong trường hợp của bạn) hạn chế? – joris

+0

@joris yes. Trong trường hợp của tôi, tôi có các cột x và y và tôi yêu cầu chia thành hai phân vùng (một với x và một với y) – Segmented

+0

bạn không cần, chỉ cần tạo mặt nạ đơn giản: nghĩa là. 'x = df [['A_x', 'B_x', 'C_x']]' – Anzel

Trả lời

10

Bạn có thể sử dụng 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') 

mang

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

cảm ơn cho các giải pháp và giải thích! – Segmented

Các vấn đề liên quan