2017-04-04 67 views
0

因此,我有一個包含3列中的名稱的熊貓數據框。看起來像這樣:如何返回其他列中每個值具有唯一計數的列

+-------------+-------------+-------------+ 
| NameColumn1 | NameColumn2 | NameColumn3 | 
+-------------+-------------+-------------+ 
| Name1  | Name2  | Name3  | 
| Name1  | Name2  | Name6  | 
| Name1  | Name2  | Name8  | 
| Name1  | Name4  | Name5  | 
+-------------+-------------+-------------+ 

現在我想添加3個新列包含每個名稱的唯一值在其左側列中的計數。

因此,例如,我想添加的第一列是列1中每個唯一名稱的唯一名稱的計數。所以這是2(Name2和Name4)並將其添加到數據框中。

對於第3列和第2列中的名稱,它將是3(name3,name6和name8)。

所以像這樣的例子:

+----------+----------+----------+-------------+-------------+--+ 
| NameCol1 | NameCol2 | NameCol3 | CountOfCol2 | CountOfCol3 | | 
+----------+----------+----------+-------------+-------------+--+ 
| Name1 | Name2 | Name3 |   2 |   3 | | 
| Name1 | Name2 | Name6 |   2 |   3 | | 
| Name1 | Name2 | Name8 |   2 |   3 | | 
| Name1 | Name4 | Name5 |   2 |   1 | | 
+----------+----------+----------+-------------+-------------+--+ 
+0

爲什麼不告訴我們你想給這個相同的輸入完整的結果?現在還不清楚。 –

回答

0

這是如何得到2列3答案:算上通過對源,目標對源分組的獨特雙,變換廣播結果。

In [60]:df.groupby('NameColumn2')[['NameColumn2','NameColumn3']].transform(lambda x: x.nunique())['NameColumn3'] 
Out[60]: 
0 3 
1 3 
2 3 
3 1 
Name: NameColumn3, dtype: int64 

上面的公式來獲得獨特的雙columnx的countofColy的結果由y替換用x 2和3,columny

相關問題