【发布时间】:2020-04-03 21:28:47
【问题描述】:
我有一个对索引和列都使用 MultiIndex 的数据框。 例如:
df = pd.DataFrame(index=pd.MultiIndex.from_product([[1,2], [1,2,3], [4,5]], names=['i','j', 'k']), columns=pd.MultiIndex.from_product([[1,2], [1,2]], names=['x', 'y']))
for c in df.columns:
df[c] = np.random.randint(100, size=(12,1))
x 1 2
y 1 2 1 2
i j k
1 1 4 10 13 0 76
5 92 37 52 40
2 4 88 77 50 22
5 75 31 19 1
3 4 61 23 5 47
5 43 68 10 21
2 1 4 23 15 17 5
5 47 68 6 94
2 4 0 12 24 54
5 83 27 46 19
3 4 7 22 5 15
5 7 10 89 79
我想按索引中的名称和列中的名称对值进行分组。
对于每个这样的组,我们将有一个二维数字数组(而不是一个系列)。我想聚合该二维数组中所有条目的std()。
例如,假设我按['i', 'x'] 分组,一组将具有i=1 和x=1 的值。我想为这些二维数组中的每一个计算std,并生成一个DataFrame,其中i 值作为索引,x 值作为列。
实现这一目标的最佳方法是什么?
如果我使用stack() 来获取x 作为索引,我仍然会计算多个std() 而不是一个,因为仍然会有多个列。
【问题讨论】:
标签: python pandas pandas-groupby