将 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())
我有一个 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())