2016-12-09 228 views
0

我有一個pandas系列和一個函數,它接受一系列值並返回一個數據幀。有沒有辦法將函數應用到系列中,並以自然的方式整理結果?將pandas series/dataframe中的每個值映射到n> 1個維度

我真正想要做的就是使用pandas series/multiindex跟蹤數據分析流水線中每個步驟的結果,其中multiindex保存用於獲取值的參數。例如,該系列(如下所示)是我的數據分析管道中步驟0的結果。在第1步中,我想嘗試更多尺寸(下面的2個,因此是數據框),並將結果整理到另一個系列中。

我們可以做得比下面更好嗎?其中stack()調用似乎有點過分。 xarray庫會不會適合我的用例?

In [112]: s 
Out[112]: 

a 0 
b 1 
c 2 
dtype: int64 

In [113]: d = s.apply(lambda x: pd.DataFrame([[x,x*2],[x*3,x*4]]).stack()).stack().stack() 

In [114]: d 
Out[114]: 

a 0 0 0 
     1 0 
    1 0 0 
     1 0 
b 0 0 1 
     1 3 
    1 0 2 
     1 4 
c 0 0 2 
     1 6 
    1 0 4 
     1 8 
dtype: int64 

回答

0

這應該會給你一個二維數組的DataSet,併爲你調整它們。如果您希望以某種方式命名它們,您可能需要先設置這些尺寸。

xr.Dataset(k: func(v) for k, v in series.items())