【问题标题】:Grouping by type and subtype按类型和子类型分组
【发布时间】:2021-05-18 00:26:52
【问题描述】:

我有三列,一列是类型,另一列是子类型,第三列是品种。我试图按类型分组并找出有多少个独特的子类型属于某个类型。

例如类型是水果,子类型是香蕉、苹果、橙子。

Type subtype Variety
fruit banana A
fruit banana B
fruit banana C
fruit apple A
fruit apple B
fruit apple C

期望的结果:

type subtype
fruit banana
fruit apple
fruit orange

总数行数为 700,由 30 种不同类型组成。

【问题讨论】:

  • df.groupby(['fruit']).agg({'subtype':'nunique'}) 您只需选择带有df = df[['type','subtype']] 的类型和子类型列。 .aggnunique 参数计算每个 fruit 分组的 agg'ing 列中唯一数据点的数量。
  • 抱歉,我可能理解错了,您是想弄清楚每种类型/子类型组合的独特品种的数量吗?
  • 是的,工作得很好,因为我想要名称,所以我使用了 'unique' 而不是 'nunique'。这将帮助我决定为建模部分保留哪一列。谢谢!
  • “橙色”从何而来,因为它没有出现在您的初始表格中?
  • 橙色出现在我写的时候,有 700 多行有 30 种不同的类型,所以其中一个子类型也是橙色的。这是一个示例案例,因为它与业务相关,所以我无法发布实际内容。

标签: pandas pandas-groupby


【解决方案1】:

试一试:

result = df.drop_duplicates(subset=['Type', 'subtype']).drop('Variety', 1)

【讨论】:

  • 如果我也有一个地方栏,看看它来自哪里。我可以使用相同的代码在同一行中查看它的来源而不重复。我试了一下,第三行不掉,效果很好
  • 它会保留第一个信息并丢弃另一个。您可以添加完整的问题吗?它可能需要不同的解决方案。
  • 示例水果香蕉 A 来自美国 水果苹果 A 也来自美国 水果苹果 B 来自荷兰等等,所以我想将每个唯一性相互分组,但我尝试了相同的代码你提供了它,它对我有用。我用result = df.drop_duplicates(subset=['Type', 'subtype'])
  • 还有另一个问题我有一个情况,我以前从未在同一个数据集上处理过,我一开始对这个问题提出的问题相当糟糕,现在它不会得到答案。 stackoverflow.com/q/67575127/15077161 如果有人可以看看 Merge 不会在那里工作,其他已经存在的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多