如何在其他列

时间:2017-04-04 13:27:27

标签: python-3.x pandas

所以我有一个包含3列名称的pandas数据帧。看起来像这样:

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

现在我想在其左侧的列中添加3个包含每个名称唯一值计数的新列。

因此,例如,我想要添加的第一列是Column2中每个唯一名称在Column2中的唯一名称计数。因此,它是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 |  |
+----------+----------+----------+-------------+-------------+--+

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

在上面的公式中将2替换为x,将y替换为3,以获得独特的columnx,columny对的countofColy结果