cdu*_*uet 2 python pandas pandas-groupby
我有一个df像DataFrame:
| 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 |
Run Code Online (Sandbox Code Playgroud)
我希望将所有列X与X_所有字母组合在一起A,B,...(比方说,也可以调用该组X),以及使用组COMMON.我想稍后将函数std()应用于所有分组值.
所以结果如下:
COMMON | A | B |
---------------------------
a |std(...)|std(...)|
---------------------------
b |std(...)|std(...)|
Run Code Online (Sandbox Code Playgroud)
我能够使用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 |
Run Code Online (Sandbox Code Playgroud)
但我也不知道该怎么做.正如您可能看到的,我并不真正关心索引.
谢谢您的帮助!
您可以首先通过melt删除_列名称(为了更好的性能,因为strip只有很少的值)来重新整形pivot_table:
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |