[英]Want to create column with lists of unique values using groupby and transform
[英]Getting different Values when using groupby(column)["id"].nunique and trying to add a column using transform
我正在尝试计算数据集中每组的单个值,并将它们作为新列添加到表中。 第一个有效,第二个产生错误的值。 当我使用下面的代码unique_id_per_column = source_table.groupby("disease").some_id.nunique()
我会得到
| | disease | some_id |
|---:|:------------------------|--------:|
| 0 | disease1 | 121 |
| 1 | disease2 | 1 |
| 2 | disease3 | 5 |
| 3 | disease4 | 9 |
| 4 | disease5 | 77 |
这些数字似乎已签出,但我想将它们添加到另一个表中,其中我已经有一列包含每组的所有值。 所以我使用了下面的代码table["unique_ids"] = source_table.groupby("disease").uniqe_id.transform("nunique")
我得到了下表,除了第一行之外,每一行都有错误的数字。
| | disease |some_id | unique_ids |
|---:|:------------------------|-------:|------------------:|
| 0 | disease1 | 151 | 121 |
| 1 | disease2 | 1 | 121 |
| 2 | disease3 | 5 | 121 |
| 3 | disease4 | 9 | 121 |
| 4 | disease5 | 91 | 121 |
我预计我会得到与第一个表中相同的结果。 任何人都知道为什么我重复第一行的数字而不是正确的数字?
如果需要在另一个DataFrame
中创建列,则使用Series.map
解决方案:
s = source_table.groupby("disease").some_id.nunique()
table["unique_ids"] = table["disease"].map(s)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.