簡體   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