【问题标题】:Create new columns from aggregated categories从聚合类别创建新列
【发布时间】:2019-01-07 19:15:25
【问题描述】:

我的数据框看起来像:

    SK_ID_CURR  CREDIT_ACTIVE
0   215354  Closed
1   215354  Active
2   215354  Active
3   215354  Active
4   215354  Active
5   215354  Active
6   215354  Active
7   162297  Closed
8   162297  Closed
9   162297  Active

我想汇总每个 id 的活动和关闭的积分数,然后为 Active_creditsClosed_credits 创建一个新列,其中包含每个 ID 对应的活动和关闭的积分数。

【问题讨论】:

  • 你的预期输出是什么?

标签: python pandas aggregate pandas-groupby


【解决方案1】:

您可以使用pandas.crosstab,这样可以避免您建议的中间步骤:

res = pd.crosstab(df['SK_ID_CURR'], df['CREDIT_ACTIVE'])

print(res)

CREDIT_ACTIVE  Active  Closed
SK_ID_CURR                   
162297              1       2
215354              6       1

【讨论】:

    【解决方案2】:

    您可以使用pd.DataFrame.groupby 实现此目的

    df1.groupby(['SK_ID_CURR','CREDIT_ACTIVE']).size()
    

    输出:

    SK_ID_CURR  CREDIT_ACTIVE
    162297      Active           1
                Closed           2
    215354      Active           6
                Closed           1
    

    【讨论】:

    • 我觉得 jpp 的回答更好:)
    猜你喜欢
    • 2016-12-22
    • 1970-01-01
    • 2021-07-05
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    相关资源
    最近更新 更多