Python 3.x 如何返回其他列中每个值具有唯一计数的列
所以我有一个包含3列名称的熊猫数据框架。看起来像这样:Python 3.x 如何返回其他列中每个值具有唯一计数的列,python-3.x,pandas,Python 3.x,Pandas,所以我有一个包含3列名称的熊猫数据框架。看起来像这样: +-------------+-------------+-------------+ | NameColumn1 | NameColumn2 | NameColumn3 | +-------------+-------------+-------------+ | Name1 | Name2 | Name3 | | Name1 | Name2 | Name6 | |
+-------------+-------------+-------------+
| NameColumn1 | NameColumn2 | NameColumn3 |
+-------------+-------------+-------------+
| Name1 | Name2 | Name3 |
| Name1 | Name2 | Name6 |
| Name1 | Name2 | Name8 |
| Name1 | Name4 | Name5 |
+-------------+-------------+-------------+
+----------+----------+----------+-------------+-------------+--+
| 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 | |
+----------+----------+----------+-------------+-------------+--+
现在我想在左边的列中添加3个新列,其中包含每个名称的唯一值计数
例如,我想添加的第一列是第2列中每个唯一名称在第1列中的唯一名称计数。这就是2(Name2和Name4),并将其添加到数据帧中
对于第3列和第2列中的名称,它将是3(名称3、名称6和名称8)
所以对于这样的例子:
+-------------+-------------+-------------+
| NameColumn1 | NameColumn2 | NameColumn3 |
+-------------+-------------+-------------+
| Name1 | Name2 | Name3 |
| Name1 | Name2 | Name6 |
| Name1 | Name2 | Name8 |
| Name1 | Name4 | Name5 |
+-------------+-------------+-------------+
+----------+----------+----------+-------------+-------------+--+
| 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 | |
+----------+----------+----------+-------------+-------------+--+
这是如何获得第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
在上面的公式中,将2替换为x,将3替换为y,以获得唯一对columnx,columny的countofColy结果为什么不在相同输入的情况下向我们显示您想要的完整结果?现在还不清楚。