Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将组索引值添加到组_Python_Pandas_Pandas Groupby - Fatal编程技术网

Python 将组索引值添加到组

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

我有一个数据帧('df'),类似于(本例简化):

如果我这样做:
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