我有一个 df
数据框,例如:
| A | B | A_ | B_ |COMMON|
--------------------------------
0 | 1 | 3 | 0 | 1 | a |
--------------------------------
1 | 8 | 5 | 4 | 0 | a |
--------------------------------
2 | 3 | 6 | 2 | 4 | b |
--------------------------------
3 | 9 | 9 | 1 | 7 | b |
我想将所有列 X
与所有字母 A,B,...
的 X_
分组(比方说,组也称为 X
),并使用 COMMON
进行分组。我想将 std()
之类的稍后函数应用于所有分组值。
所以结果看起来像:
COMMON | A | B |
---------------------------
a |std(...)|std(...)|
---------------------------
b |std(...)|std(...)|
我已经能够对一个或另一个进行分组,使用 df.groupby(['COMMMON'])
作为一个标准,并使用 .groupby(mapping_function, axis=1)
用于另一个,但我如何将它们一起使用?
中间步骤的另一种替代方法是连接各个列,这样我会得到:
| A | B |COMMON|
----------------------
0 | 1 | 3 |a |
---------------------
1 | 8 | 5 |a |
---------------------
2 | 3 | 6 |b |
---------------------
3 | 9 | 9 |b |
---------------------
0 | 0 | 1 |a |
---------------------
1 | 4 | 0 |a |
---------------------
2 | 2 | 4 |b |
---------------------
3 | 1 | 7 |b |
但我也不知道该怎么做。 同样如您所见,我并不真正关心索引。
感谢您的帮助!
最佳答案
您可以先通过 melt
进行整形使用 pivot_table
从列名中删除 _
(为了更好的性能,因为 strip
只有几个值) :
df = (df.rename(columns=lambda x: x.strip('_'))
.melt('COMMON')
.pivot_table(index='COMMON',columns='variable', values='value', aggfunc='std'))
print (df)
variable A B
COMMON
a 3.593976 2.217356
b 3.593976 2.081666
关于python - Pandas Groupby 在不同轴上使用多个标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53264153/