2016-12-09 71 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())