2016-09-29 68 views
0

我正在製作一個包含多個數據幀的面板。每個都很長。在熊貓面板中包含兩個不同大小的數據幀

我創建了dfs,結合成一個字典,然後組合成一個面板;

for name in names: # large list of paths 
    # Do some code to get data info (dI), dataframe (df) and nameID 
    # Create a dictionary out of dfs by nameID 
    dictDFs[nameID] = df 

# Collect all dataframes into one from dictionary dictDFs 
pn = pd.Panel(dictDFs) 

然後創建pickle文件,pn.to_pickle(path)

我想陣列中的其它信息附加到數據幀不。我不想改變數據的大小或形狀,保持數組唯一的整數。我不能打包它們作爲元組;不喜歡小組。然而,這就是我認爲應該是這樣的:

# Create a dictionary out of df and dI by nameID 
dictDFs[nameID] = (df,dI) 

感謝

回答

0

我能解決這個問題。

for name in names: # List of names 
    nm = base(name)[:-4] 

    # Uses each name to extract, trim, cure, and make meaningful 
    dfInfo,df = some_function(name) 
    dfInfo = dfInfo.rename(index=str, columns={0: nm}) 

變換元組成的pandas.core.frame.Pandas元組:

tups = tuple(dfInfo.itertuples(index=False)) 

到它的數據幀轉換成一個元組,並使用該元組作爲字典鍵,使得所述面板關鍵是不可改變的關鍵該_fields是爲一列數據幀的每個元組項目一樣:

nmT = tups[0]._fields[0] 

從tupled數據幀信息創建一個元組:

dfInfo = (nmT, tuple(pd.Series(tup).loc[0] for tup in tups)) 

現在我們可以用不可改變的元組來創建一個字典,從數據信息的關鍵是:

dictDFs[dfInfo] = df 

# Collect all dataframes into one from dictionary dictDFs 
pn = pd.Panel(dictDFs) 
pn.to_pickle(path)