2016-05-23 50 views
1

我想創建具有可變列數的熊貓數據幀。Python熊貓創建具有可變數量輸入的數據幀

import pandas as pd 
import numpy as np 
MonthNumber = np.array([1,1,2,4,5,6,5]) 
Type1 = np.array(['A','B','C',A','A','B','C']) 
Type2 = np.array([1,1,0,1,0,0,1]) 
Data = np.array([1.1,3,.52,34,15,45,34]) 
Data2 = Data * 1.1 
Data3 = Data * 2 

def variableDataFrame(*args): 
    df = pd.DataFrame({'MonthNumber':args1, 'Data':args2}) 
    print df.columns 

所以,函數調用看起來像:

variableDataFrame(MonthNumber,Data) #prints MonthNumber,Data 
variableDataFrame(MonthNumber,Type1,Data) # prints MonthNumber,Type1,Data 

回答

0

爲了完成你的代碼,並使其爲您提供什麼工作,我應該這樣做:

def variableDataFrame(*args): 
    """I'm assuming the last argument is the data argument. 
    Everything else gets put into an index. 
    If you want these as columns instead of rows, 
    put a ".T" at the end of the return argument.""" 

    return pd.DataFrame(args[-1], index=pd.MultiIndex.from_arrays(args[:-1])) 

    # Optional return if you want columns instead 
    # return pd.DataFrame(args[-1], index=pd.MultiIndex.from_arrays(args[:-1])).T 

但我會對此提出一個大警告!

您正在創建pd.DataFrame的替代品。你所做的一切都是重新洗牌和混淆論據。爲了使其正常工作,您需要知道在什麼位置使用pd.DataFrame時需要知道的相同內容。

用我的系統,我希望有幫助。