繁体   English   中英

如何根据 pandas dataframe 中的多列按元素分组并将每组的元素数量保存在另一列中?

[英]How can I group by elements based on multiple columns in pandas dataframe and save the number of elements of each group in another column?

我有下一个形式的 dataframe:

+--------+--------+--------+
|  Col1  |  Col2  |  Col3  |
+--------+--------+--------+
|  1     |   2    |    1   |
+--------+--------+--------+
|  1     |   2    |    1   |
+--------+--------+--------+
|  1     |   3    |    1   |
+--------+--------+--------+
|  2     |   4    |    1   |
+--------+--------+--------+ 

我想得到下一个dataframe:

+--------+--------+--------+--------+
|  Col1  |  Col2  |  Col3  |  Count |
+--------+--------+--------+--------+
|  1     |   2    |    1   |   2    |
+--------+--------+--------+--------+
|  1     |   2    |    1   |   2    |
+--------+--------+--------+--------+
|  1     |   3    |    1   |   1    |
+--------+--------+--------+--------+
|  2     |   4    |    1   |   1    |
+--------+--------+--------+--------+

我怎样才能得到那个 dataframe? 在按 dataframe 分组后,我尝试使用 size() 方法,但结果不是我想要的。 我想得到另一列,其中出现整行的出现次数。

使用GroupBy.transform得到一个相等长度的向量,并将其作为新列:

df['Count'] = df.groupby(df.columns.tolist())['Col1'].transform('size')

Output

   Col1  Col2  Col3  Count
0     1     2     1      2
1     1     2     1      2
2     1     3     1      1
3     2     4     1      1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM