DataFrame groupby 2列并计算第三次出现

Posted

技术标签:

【中文标题】DataFrame groupby 2列并计算第三次出现【英文标题】:DataFrame groupby 2 columns und count occurence in third 【发布时间】:2021-12-30 15:23:17 【问题描述】:

我正在尝试将 DataFrame 按两列分组,并计算第三列中出现的差异。到目前为止我得到的是:

import pandas as pd

df = pd.DataFrame('colA': ['name1', 'name2', 'name2', 'name4', 'name2', 'name5'], 'colB': ['red', 'yellow', 'yellow', 'black', 'yellow', 'green'], 'colC': ['value1', 'vlaue2', 'value2', 'value4', 'value5', 'value6'])

df_grouped = df.groupby(["colA", "colB"])["colC"].count()

print(df_grouped)

输出在哪里:

colA   colB  
name1  red       1
name2  yellow    3
name4  black     1
name5  green     1

我想要做的是,将 colA 和 colB 视为 1 列,并计算(并显示)colC 中不同值的出现。所以在这种情况下应该是:

    colA    colB    colC  count  
0  name1     red  value1  1
1  name2  yellow  vlaue2  2
2                 value5  1
3  name4   black  value4  1
4  name5   green  value6  1

提前致谢。

编辑: 我也试过是这样的:

df["colAB"] = df["colA"].map(str) + " " + df["colB"]
df_grouped = df.groupby(["colAB", "colC"])["colC"].count().reset_index(name="count")

但它也没有带来正确的结果。更加具体。我需要的是每个值(colC)以及colA和colB组合出现的频率。即使 colA 和 ColB 有 2 列,两者的组合也是一个不同的值。

【问题讨论】:

【参考方案1】:

如果我理解正确,您只需按 3 列 A、B 和 C 分组:

df_grouped = df.groupby(["colA", "colB","colC"])["colC"].count().reset_index(name="count")
Output :
>
    colA    colB    colC  count
0  name1     red  value1      1
1  name2  yellow  value2      2
2  name2  yellow  value5      1
3  name4   black  value4      1
4  name5   green  value6      1
df_grouped = df.groupby(["colA", "colB","colC"])["colC"].count()

> 
colA   colB    colC  
name1  red     value1    1
name2  yellow  value2    2
               value5    1
name4  black   value4    1
name5  green   value6    1

【讨论】:

感谢您的回答。这可能会奏效。但是,如果 colA 和 ColB 的组合只出现一次并且可以组合在一起,然后只显示不同的 colC,那会更好。在这种情况下索引 1 和 2 因为有很多条目。也许必须再次对结果进行分组?

以上是关于DataFrame groupby 2列并计算第三次出现的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:groupby A 列并从其他列创建元组列表?

Groupby 一列并计算另一列的条件?

Python Dataframe:在一列上使用Groupby计算R ^ 2和RMSE

Groupby 一列并找到它的总和和计数

如何分组列并计算其他列的总数,同时排除NaN?

Spark Dataframe GroupBy 和计算复杂聚合函数