2015-06-12 4 views
0

У меня есть 2 набора из 92 столбцов. На данный момент все 92 столбца находятся в одной строке. Возможно ли перерисовать это так, чтобы 92 столбца были разделены на группы из 12, по существу имеющие 8 наборов из 12 данных (один под другим). мой код:Организация столбцов в пандах DataFrame

import glob 
import pandas as pd 
import os 

os.chdir('C:/Users/peaches9/Desktop/') 

Result = [] 

def FID_extract(filepath): 

    path_pattern = filepath 
    files = glob.glob(path_pattern) 
    dataframes = [pd.DataFrame.from_csv(f, index_col=None) for f in files] 

    new_dfa = pd.DataFrame() 

    for i, df in enumerate(dataframes): 
     colname = 'Run {}'.format(i+1) 
     selected_data = df['Unnamed: 3'].ix[12:17] 
     new_dfa[colname] = selected_data 
    #print new_dfa 
    #new_dfa.to_csv('FID_11169_Liquid.csv') 
    Result.append(new_dfa) 


def TCD_extract(filepath): 

    path_pattern = filepath 
    files = glob.glob(path_pattern) 
    dataframes = [pd.DataFrame.from_csv(f, index_col=None) for f in files] 

    new_dfb = pd.DataFrame() 

    for i, df in enumerate(dataframes): 
     colname = 'Run {}'.format(i+1) 
     selected_data = df['Unnamed: 3'].ix[12:15] 
     new_dfb[colname] = selected_data 
    #print new_dfb 
    #new_dfb.to_csv('TCD_11169_liquid.csv') 
    Result.append(new_dfb) 


FID_extract('C:/Users/peaches9/Desktop/Cryostat Verification/GC results/11169_Cryo_1bar/FID_0*') #files directory 

TCD_extract('C:/Users/peaches9/Desktop/Cryostat Verification/GC results/11169_Cryo_1bar/TCD_0*') 

dfc = pd.concat(Result) 

Out:

 Run 1..... Run 95  Run 96 
12 5193791.85 5193915.21 5194343.34 
13 1460874.04 1460929.33 1461072.84 
14 192701.82 192729.55 192743.99 
15 156836.4 156876.97 156889.26 
16 98342.84  98346.7 98374.95 
17   NaN   NaN   NaN 
12  3982.69  3982.16  4017.66 
13 2913008.04 2913627.33 2914075.7 
14 226963.37 226956.1 227106.71 
15  25208.2 25173.89 25197.88 

Я хочу, чтобы все 96 колонн разделен на 8 X 12 колонок все друг под другом. Спасибо заранее.

EDIT:

мне удалось отделить dataframes в наборы 8 ... но я не могу получить каждый dataframe идти под друг друга. Они кончают справа, всегда!

dfc = pd.concat(Result) 

df1 = dfc.ix[:,0:12] 
df2 = dfc.ix[:,12:24] 
df3 = dfc.ix[:,24:36] 
df4 = dfc.ix[:,36:48] 
df5 = dfc.ix[:,48:60] 
df6 = dfc.ix[:,60:72] 
df7 = dfc.ix[:,72:84] 
df8 = dfc.ix[:,84:96] 

pieces = [df1,df2,df3,df4,df5,df6,df7,df8] 

df_final = pd.concat([df1, df2], levels = 1, axis = 3) 

ответ

0

Предполагая, что вы пытаетесь принять ваши 96 столбцов, и создать единую 2-мерную DataFrame с 12 столбцов и 8 раз больше строк, то вы хотите:

df_final = pd.concat(pieces, axis=0, ignore_index=True) 

Если вы пытаетесь для создания 3-мерного DataFrame, с вашим новым измерением, имеющим 8 значений, вы не пытаетесь создать DataFrame, а Panel.

+0

Я хочу 8 строк данных, каждый из которых содержит 12 наборов столбцов (от 1 до 12) ... Таким образом, первый набор данных будет выполняться с 1 по 12, а под ним будут выполняться 13 -24 ... и так далее. Вышеприведенный код делает это, но данные несколько искажены ... с каждым набором прогонов не под друг другом. – Joey

+0

Я не понимаю вашу проблему. Если данные выровнены по неправильной оси, измените параметр 'axis = X'. Если вы хотите, чтобы данные печатались на консоль определенным образом, напишите функцию, которая печатает данные на консоли так, как вы хотите. Если вы пытаетесь создать структуру данных с 8 массивами формы 'N_samples * N_columns = N_samples * 12', вам нужно перейти к панелям, как я предложил. – Andreus

+0

проблема была решена здесь: http://stackoverflow.com/questions/30840128/how-to-stack-data-frames-on-top-of-each-other-in-pandas – Joey

Смежные вопросы