Python 将组索引值添加到组
我有一个数据帧('df'),类似于(本例简化): 如果我这样做:Python 将组索引值添加到组,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个数据帧('df'),类似于(本例简化): 如果我这样做: grouped=df.groupby('timestamp') 我现在有一个三组的groupby。我现在需要添加一个“date\u time\u trigger”列,该列包含一个基于组索引的值: index | timestamp | value | date_time_trigger ================================================ 001 | 2020-09-2
grouped=df.groupby('timestamp')
我现在有一个三组的groupby。我现在需要添加一个“date\u time\u 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\u time\u trigger
的值是在每个组中设置的,但是现在
我需要将组重新组合到原始数据帧df中,以继续我的过程。我能在文档中找到的唯一方法是应用某种类型的聚合,如mean或avg,但我只需要groupby将标签添加到每个组实例中。如何取回数据帧?使用
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,但熊猫不喜欢that@regretoverflow检查第二种方法:-)
df.groupby('timestamp').ngroup().add(1).astype(str).radd('triggergroup')
0 triggergroup1
1 triggergroup1
2 triggergroup2
3 triggergroup2
4 triggergroup3
5 triggergroup3
dtype: object