python - Pandas Groupby 在不同轴上使用多个标准

标签 python pandas pandas-groupby

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

相关文章:

python - Dask Bag.to_textfiles 适用于单个分区,但不适用于多个分区

python - 检查 Pandas DataFrame 列中的字符串是否在字符串列表中

python - 根据条件将某些行的值与另一个最近的行相加

python - 未使用 Matplotlib 绘制线条/轨迹

python - 是否可以在 Django 模板语言中定位 html 元素的值?

numpy - 与ndarray相关的DataFrame.mul使用错误

python - 根据另一列对一列进行分箱并交叉制表

python - 如何获取每个 `user_id`对应的每个tag值的比例

python Pandas : pivot rows to columns based on duplicate index columns

python - 通过使用多列进行分组,使用 pandas 创建彩色条形图