将 pandas series/dataframe 中的每个值映射到 n>1 个维度

Map each value in pandas series/dataframe to n>1 dimensions

我有一个 pandas 系列,以及一个在系列中取值的函数和 returns 数据框。有没有办法将函数应用于系列并以自然的方式整理结果?

我真正想做的是使用 pandas series/multiindex 来跟踪我的数据分析管道的每个步骤的结果,其中 multiindex 保存用于获取的参数值。例如,系列(下图)是我的数据分析管道中步骤 0 的结果。在第 1 步中,我想尝试 x 个更多维度(下方 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

这应该会为您提供 DataSet 个二维数组,并为您对齐它们。如果您希望它们以特定方式命名/具有特定尺寸,您可能需要先设置尺寸。

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