Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何返回其他列中每个值具有唯一计数的列_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 如何返回其他列中每个值具有唯一计数的列

Python 3.x 如何返回其他列中每个值具有唯一计数的列,python-3.x,pandas,Python 3.x,Pandas,所以我有一个包含3列名称的熊猫数据框架。看起来像这样: +-------------+-------------+-------------+ | NameColumn1 | NameColumn2 | NameColumn3 | +-------------+-------------+-------------+ | Name1 | Name2 | Name3 | | Name1 | Name2 | Name6 | |

所以我有一个包含3列名称的熊猫数据框架。看起来像这样:

+-------------+-------------+-------------+
| 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结果

为什么不在相同输入的情况下向我们显示您想要的完整结果?现在还不清楚。