numpy 在Pandas中按多个字段分组时删 debugging 误标签非常棘手

sqyvllje  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(97)

如果前缀相似,我希望通过几个列进行分组,并根据一列内的分类值进行求和。

数据

name      type    size   month
AA:3400            5     august
AA:3401   FALSE    1     august
AA:3402   FALSE    2     august
AA:3404   TRUE     0     august
AA:3409   FALSE    1     september
AA:3410   FALSE    8     september
AA:3412   FALSE    9     september
BB:3400   TRUE     4     august
BB:3401   FALSE    7     august

字符串

所需

name    type    size  month
AA      TRUE    0     august
AA      FALSE   3     august
AA              5     august
BB      TRUE    4     august
BB      FALSE   7     august
AA      TRUE    0     september
AA      FALSE   18    september

在做

但是,如果值具有相同的前缀,我该如何分组?任何建议都很感激。

out = (
    df.assign(type= df["name"].astype(
        pd.CategoricalDtype(["TRUE", "FALSE"], ordered=True)))
      .groupby([df["name", "date"].str.split(":").str[0], "type"],
               dropna=False, group_keys=False)["size"].sum().reset_index()
)


但是,我不确定如何在这个分组中合并多个字段。任何建议都很感激。

r8uurelv

r8uurelv1#

你能做到的

out = df.groupby([df["name"].str.split(":").str[0],
                  df['month'],
                  df['type']])['size'].sum().unstack('type',fill_value=0).stack().reset_index(name='size')
Out[61]: 
  name      month   type  size
0   AA     august  FALSE     3
1   AA     august   None     5
2   AA     august   TRUE     0
3   AA  september  FALSE    18
4   AA  september   None     0
5   AA  september   TRUE     0
6   BB     august  FALSE     7
7   BB     august   None     0
8   BB     august   TRUE     4

字符串

相关问题