大Pandas在不同的轴上使用多个标准进行分组

2024-06-16 15:03:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

还有,{cd2>std()。在

结果如下:

^{pr2}$

我已经能够将其中一个或另一个进行分组,使用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    |

但我也不知道该怎么做。 你可能也看到了,我其实并不在乎指数。在

谢谢你的帮助!在


Tags: 数据方法df步骤functioncommon指数条件
3条回答

只要groupby

h = lambda x: x[-1][0]

df.set_index('COMMON', append=True).stack().groupby(['COMMON', h]).std().unstack()

               A         B
COMMON                    
a       3.593976  2.217356
b       3.593976  2.081666

您可以先通过^{}和从列名中删除_来重塑形状(为了获得更好的性能,因为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

IIUC公司

df.melt('COMMON').assign(variable=lambda x : x['variable'].str.rstrip('_')).\
       groupby(['COMMON','variable']).value.std().unstack()
Out[18]: 
variable         A         B
COMMON                      
a         3.593976  2.217356
b         3.593976  2.081666

相关问题 更多 >