将nunique()与groupby一起使用时的错误消息

时间:2019-02-13 21:30:14

标签: pandas pandas-groupby

我知道有人问过关于在groupby上使用nunique()的几个问题,但是我得到了不同的错误消息。以下代码可以正常工作:

d = {'PDOS': [1, 1, 2, 2], 'CPT' : ["123", "123", "456", "456"], 'BC': ["A", "A", "A", "B"], 'Other': [1,2,3,4]}
df = pd.DataFrame(data = d)

df = df.merge(df[["PDOS", "CPT", "BC"]].groupby(["PDOS", "CPT"]).count(), how = "left", on = ["PDOS", "CPT"])

然后我得到一个新列(“ BC_y”),该列为我提供了每个组的BC行数。

但是,如果我将最后一行更改为使用nunique()如下:

df = df.merge(df[["PDOS", "CPT", "BC"]].groupby(["PDOS", "CPT"]).nunique(), how = "left", on = ["PDOS", "CPT"])

我收到错误消息:

  

您正在尝试合并object和int64列。如果要继续,则应使用pd.concat

我认为原因可能是当使用nunique()时,列“ PDOS”和“ CPT”与列一样显示为索引。

如何获取唯一值的数量而不是每个组的行数?

0 个答案:

没有答案