在高维 bin 中重新采样 pandas 没有日期时间索引的数据帧
Resampling pandas dataframe without datetime index in higher-dimensional bins
我有一个没有日期时间索引的 pandas DataFrame。我的 DataFrame 的一个示例如下
x1 x2 x3 y1 y2
0 0.83 0.83 1.16 0.0 1.0
1 0.83 0.83 1.25 0.0 1.0
2 0.64 0.85 1.09 0.0 1.0
3 0.72 0.94 1.06 0.0 1.0
4 0.73 0.85 4.04 0.0 1.0
5 0.83 0.94 4.84 0.0 1.0
6 0.56 0.43 1.07 0.0 1.0
7 0.59 0.56 1.05 0.0 1.0
8 0.59 0.91 2.05 0.0 1.0
9 0.59 0.96 4.99 0.0 1.0
10 0.83 0.56 7.99 0.0 1.0
我想通过位于特定间隔内的 x1,x2,x3
的值对这个 DataFrame 重新采样,并对 y1
和 y2
求和。假设这些间隔是 x1,x2
的 [0,1]
和 x3
的 [1,8]
。我将这些间隔划分为宽度为 0.01
的箱。然后,我想对这些间隔的给定 bin 中 x1,x2,x3
的每个值求和 y1
和 y2
。
我该怎么做?
我们可以将每个 x
列值四舍五入到最接近的小数点 0.05 并使用 groupby
+ sum
:
cols = ['x1','x2','x3']
out = df[cols].apply(lambda col: col.mul(10).astype(int).div(10).add(0.05)).combine_first(df).groupby(['x1','x2','x3'], as_index=False).sum()
输出:
x1 x2 x3 y1 y2
0 0.55 0.45 1.05 0.0 1.0
1 0.55 0.55 1.05 0.0 1.0
2 0.55 0.95 2.05 0.0 1.0
3 0.55 0.95 4.95 0.0 1.0
4 0.65 0.85 1.05 0.0 1.0
5 0.75 0.85 4.05 0.0 1.0
6 0.75 0.95 1.05 0.0 1.0
7 0.85 0.55 7.95 0.0 1.0
8 0.85 0.85 1.15 0.0 1.0
9 0.85 0.85 1.25 0.0 1.0
10 0.85 0.95 4.85 0.0 1.0
我有一个没有日期时间索引的 pandas DataFrame。我的 DataFrame 的一个示例如下
x1 x2 x3 y1 y2
0 0.83 0.83 1.16 0.0 1.0
1 0.83 0.83 1.25 0.0 1.0
2 0.64 0.85 1.09 0.0 1.0
3 0.72 0.94 1.06 0.0 1.0
4 0.73 0.85 4.04 0.0 1.0
5 0.83 0.94 4.84 0.0 1.0
6 0.56 0.43 1.07 0.0 1.0
7 0.59 0.56 1.05 0.0 1.0
8 0.59 0.91 2.05 0.0 1.0
9 0.59 0.96 4.99 0.0 1.0
10 0.83 0.56 7.99 0.0 1.0
我想通过位于特定间隔内的 x1,x2,x3
的值对这个 DataFrame 重新采样,并对 y1
和 y2
求和。假设这些间隔是 x1,x2
的 [0,1]
和 x3
的 [1,8]
。我将这些间隔划分为宽度为 0.01
的箱。然后,我想对这些间隔的给定 bin 中 x1,x2,x3
的每个值求和 y1
和 y2
。
我该怎么做?
我们可以将每个 x
列值四舍五入到最接近的小数点 0.05 并使用 groupby
+ sum
:
cols = ['x1','x2','x3']
out = df[cols].apply(lambda col: col.mul(10).astype(int).div(10).add(0.05)).combine_first(df).groupby(['x1','x2','x3'], as_index=False).sum()
输出:
x1 x2 x3 y1 y2
0 0.55 0.45 1.05 0.0 1.0
1 0.55 0.55 1.05 0.0 1.0
2 0.55 0.95 2.05 0.0 1.0
3 0.55 0.95 4.95 0.0 1.0
4 0.65 0.85 1.05 0.0 1.0
5 0.75 0.85 4.05 0.0 1.0
6 0.75 0.95 1.05 0.0 1.0
7 0.85 0.55 7.95 0.0 1.0
8 0.85 0.85 1.15 0.0 1.0
9 0.85 0.85 1.25 0.0 1.0
10 0.85 0.95 4.85 0.0 1.0