【问题标题】:Count Distinct Using Pandas Transform使用 Pandas 变换计数不同
【发布时间】:2020-01-28 02:32:12
【问题描述】:

假设我有以下数据框:

df2 = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
                          'foo', 'bar', 'foo', 'foo'],
                   'B' : ['one', 'one', 'two', 'three',
                         'two', 'two', 'one', 'three'],
                   'C' : np.random.randn(8), 'D' : np.random.randn(8)})
df2.head()

如下所示:

     A      B         C         D
0  foo    one  0.613774  0.783539
1  bar    one -0.937659 -0.913213
2  foo    two -1.568537  1.569597
3  bar  three -0.353449  1.108789
4  foo    two -1.769544  0.530466

我知道,如果我想创建另一列,即 A 列中每个值的记录计数,我可以执行以下操作:

df2['counts'] = df2.groupby('A')['B'].transform(np.size)

但是,假设我只想计算按 A 分组的 B 的唯一元素?如果我要将数据帧减少到 2 列(一列用于“foo”,一列用于“bar”),我知道如何执行此操作,但是如何使用转换来执行此操作?

【问题讨论】:

标签: python pandas numpy


【解决方案1】:

使用GroupBy.transform.nunique:

df2['counts'] = df2.groupby('A')['B'].transform('nunique')

【讨论】:

    猜你喜欢
    • 2016-04-11
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    相关资源
    最近更新 更多