熊猫基于不同列的组聚合计数

空值

假设我们有一个如下所示的 df:

    A   B
0   a   101
1   b   101
2   a   101
3   d   101
4   c   102
5   a   102
6   b   102
7   b   102
8   b   102

现在,我想要做的是通过 B + 1 上的唯一值的 # 的大小创建 df。对于这种情况,它是 4x3,并通过 A 中元素的计数填充 df在 B 组中,如下所示:

    item 101 102
0   a     2   1
1   b     1   3
2   c     0   1
3   d     1   0

我知道在 R 中有一种方法,但我需要在 python 中做到这一点。我已经通过某种计数循环完成了它,但这不是优雅的方式,也不是pythonic。

那么,我如何通过 groupby 和聚合或任何其他想法来实现这一目标?

丹尼·梅塞霍

使用交叉表

import pandas as pd

data = [['a',   101],
['b',   101],
['a',   101],
['d',   101],
['c',   102],
['a',   102],
['b',   102],
['b',   102],
['b',   102]]

df = pd.DataFrame(data=data, columns=['A', 'B'])

result = pd.crosstab(df.A, df.B)
print(result.reset_index())

输出

B  A  101  102
0  a    2    1
1  b    1    3
2  c    0    1
3  d    1    0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章