熊猫计算唯一行

新手上路,请多包涵

我有一个类似于以下内容的熊猫数据框:

 ColA ColB
1    1
1    1
1    1
1    2
1    2
2    1
3    2

我想要一个与 Counter 具有相同功能的输出。我需要知道每行出现了多少次(所有列都相同。

在这种情况下,正确的输出将是:

 ColA ColB Count
1    1    3
1    2    2
2    1    1
3    2    1

我尝试过这样的事情:

 df.groupby(['ColA','ColB']).ColA.count()

但这给了我一些难看的输出我在格式化时遇到了问题

原文由 qwertylpc 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 607
2 个回答

您可以将 sizereset_index 一起使用:

 print df.groupby(['ColA','ColB']).size().reset_index(name='Count')
   ColA  ColB  Count
0     1     1      3
1     1     2      2
2     2     1      1
3     3     2      1

原文由 jezrael 发布,翻译遵循 CC BY-SA 3.0 许可协议

我只需要 计算唯一行 并使用 DataFrame.drop_duplicates 替代方案如下:

 len(df[['ColA', 'ColB']].drop_duplicates())

它在我的数据上的速度是 len(df.groupby(['ColA', 'ColB'])) 的两倍。

原文由 eddygeek 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题