我知道有人问过关于在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”与列一样显示为索引。
如何获取唯一值的数量而不是每个组的行数?