![](/img/trans.png)
[英]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.