python 如何创建带有group by和提供唯一计数的列的Pandas数据框架

qv7cva1a  于 2023-01-04  发布在  Python
关注(0)|答案(1)|浏览(100)

我已经看到了这个答案,我正在寻找的是类似的,我只是不能包裹我的头周围。Group by and count of a pandas dataframe column
我想计算的数额独特的帐户与各自的预订,如果他们有或没有搅动。这是存储在Pandas数据框。
我有一个数据集,如下所示:
| 账户|预订|客户流失|
| - ------| - ------| - ------|
| ABC公司|新增|1个|
| ABC公司|追加销售|无|
| ABC公司|新增|1个|
| A公司|续订|无|
| A公司|新增|1个|
| A公司|续订|1个|
我希望能找到一些
| 账户|预订|计数|客户流失|
| - ------| - ------| - ------| - ------|
| ABC公司|新增|第二章|1个|
| | 追加销售|1个|无|
| A公司|续订|1个|无|
| | 新增|1个|1个|
| | 续订|1个|无|
我试过:df. groupby('帐户名称')['预订类型']. agg(['唯一','唯一'])
得到这个:
| 账户名称|独特|努尼奇|
| - ------| - ------| - ------|
| ABC公司|追加销售|1个|
我想不出如何添加"客户流失"列。提前感谢!

de90aj5v

de90aj5v1#

您可以对所有列进行分组,并获得具有大小的聚合。

import pandas as pd

df = pd.DataFrame(
    {
        "Account": ["ABC Inc"] * 3 + ["Company A"] * 3,
        "Booking": ["New", "Upsell"] * 3,
        "Churn": [1, 0, 1, 0, 1, 1],
    }
)

df.groupby(df.columns.to_list(), as_index=False).size()

# or, as pointed out by Chrysophylaxs
df.value_counts()

给予

Account Booking  Churn  size
0    ABC Inc     New      1     2
1    ABC Inc  Upsell      0     1
2  Company A     New      1     1
3  Company A  Upsell      0     1
4  Company A  Upsell      1     1

相关问题