繁体   English   中英

使用 groupby(column)["id"].nunique 并尝试使用 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM