【问题标题】:Pandas group-by, filter, and aggregatePandas 分组、过滤和聚合
【发布时间】:2017-07-03 07:26:03
【问题描述】:

我有一个类似的数据框

import pandas as pd
import numpy as np
d = {'id':[1,2,3,4,3,3,1,6], 'type':['t2','t1','t2','t2','t3','t3','t4','t3']}
df = pd.DataFrame(data=d)

目标是获得一个按 id 分组的数据帧,并且每个组的每种类型都有nunique

我认为这会解决它,但它似乎不起作用:

df.groupby('id').agg({'type':pd.Series.nunique()})

【问题讨论】:

  • nunique 中删除(),因为您想传递对函数的引用,而不是调用它。 df.groupby(by='id').agg(pd.Series.nunique) 会成功的。
  • 谢谢@dnswlt - 我知道这很容易。

标签: python pandas filter group-by aggregate


【解决方案1】:

您可以通过首先访问type SeriesGroupBy 来更简单地执行此操作。

>>> df.groupby('id').type.nunique()
id
1    2
2    1
3    2
4    1
6    1

正如 cmets 中所述,您当前的方法不起作用,因为 agg 需要一个可以调用的函数对象 (nunique),而不是像 nunique() 那样的实际函数调用尝试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    • 2021-08-24
    • 2021-03-14
    • 2022-11-15
    • 2020-12-24
    相关资源
    最近更新 更多