【问题标题】:add group index value to groups将组索引值添加到组
【发布时间】:2020-09-22 04:09:34
【问题描述】:

我有一个类似的数据框('df')(在此示例中进行了简化):

index |     timestamp    | value
================================
001   | 2020-09-20 07:00 | 1.4
002   | 2020-09-20 07:00 | 1.5
001   | 2020-09-20 09:00 | 1.6
002   | 2020-09-20 09:00 | 1.4
001   | 2020-09-20 11:00 | 1.23
002   | 2020-09-20 11:00 | 1.46

如果我这样做: grouped = df.groupby('timestamp') 我现在有一个包含三个组的 groupby。我现在需要添加一个“date_time_trigger”列,其中包含一个基于组索引的值:

index |     timestamp    | value | date_time_trigger
================================================
001   | 2020-09-20 07:00 | 1.4   | triggergroup1
002   | 2020-09-20 07:00 | 1.5   | triggergroup1
001   | 2020-09-20 09:00 | 1.6   | triggergroup2
002   | 2020-09-20 09:00 | 1.4   | triggergroup2
001   | 2020-09-20 11:00 | 1.23  | triggergroup3
002   | 2020-09-20 11:00 | 1.46  | triggergroup3

然后我需要将这些组组合回原始数据框。我尝试简单地将列添加到原始数据框中,然后在组迭代器中更改其值:

idx=0
df['date_time_trigger']='foo'
grouped = df.groupby('timestamp')
for name,group in grouped:
  idx=idx+1
  group['date_time_trigger']='triggergroup'+str(idx)

据我所知,date_time_trigger 的值是在每个组内设置的,但是现在 我需要将该组重新组合到原始数据帧 df 中以继续我的过程。我可以在文档中找到的唯一方法是应用某种类型的聚合,例如平均值或平均值,但我只需要 groupby 将标签添加到每个组实例。如何取回我的数据框?

【问题讨论】:

    标签: python pandas pandas-groupby


    【解决方案1】:

    检查factorize

    df['group'] = df['timestamp'].factorize()[0]+1
    

    方法二

    df.groupby('timestamp').ngroup().add(1).astype(str).radd('triggergroup')
    
    0    triggergroup1
    1    triggergroup1
    2    triggergroup2
    3    triggergroup2
    4    triggergroup3
    5    triggergroup3
    dtype: object
    

    【讨论】:

    • 不错!是否可以将 factorize 的输出连接到一个字符串,以在我原来的问题中给出类似 'triggergroup3' 的内容?我尝试了简单的 python 字符串 concat 但熊猫不喜欢那个
    • @regretoverflow 检查第二种方法:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多