【问题标题】:How to do group by and take Count of one column divide by count of unique of second column of data frame in python pandas?python - 如何在python pandas中进行分组并取一列的计数除以数据框第二列的唯一计数?
【发布时间】:2017-02-03 11:06:09
【问题描述】:

我有 4 列的熊猫数据框,例如“col1”、“col2”、“col3”和“col4”,现在我想按 col1 和 col2 分组,并希望在下面进行汇总。

Count(col3)/(Count(unique col4)) As result_col

我该怎么做?我正在将 MySql 与 pandas 一起使用。

我从互联网上尝试了很多东西,但没有得到确切的解决方案,这就是我在这里发帖的原因。给出拒绝投票的理由,以便我改进我的问题。

【问题讨论】:

  • 发布原始数据、创建 df 的代码、您的尝试以及代表您实际问题的期望结果

标签: python mysql pandas numpy


【解决方案1】:

看来您需要 aggregate by sizenunique 然后 div 输出列:

df = pd.DataFrame({'col1':[1,1,1],
                   'col2':[4,4,6],
                   'col3':[7,7,9],
                   'col4':[3,3,5]})

print (df)
   col1  col2  col3  col4
0     1     4     7     3
1     1     4     7     3
2     1     6     9     5

df1 = df.groupby(['col1','col2']).agg({'col3':'size','col4':'nunique'})
df1['result_col'] = df1['col3'].div(df1['col4'])
print (df1)
           col4  col3  result_col
col1 col2                        
1    4        1     2         2.0
     6        1     1         1.0

【讨论】:

  • 看来可以帮到我...让我现在试试...谢谢
  • 好的,请测试一下。
  • 如何根据特定条件获取计数,例如“按 col1、col2 分组并获取聚合计数(col3 where col3=7)”?你能帮帮我吗?
  • 你首先需要boolean indexing - 所以df1 = df[df.col3 == 7].groupby(['col1','col2']).agg({'col3':'size','col4':'nunique'})
  • 但我不确定是否理解,也许更好的是创建带有样本和所需输出的新问题。
猜你喜欢
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多