【发布时间】: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 列,两者的组合也是一个不同的值。
【问题讨论】:
标签: python pandas dataframe group-by