使用pandas在python中获取hh:mm:ss时间数据的平均数分组

问题描述 投票:0回答:1

我有一个带有以下示例数据的熊猫数据框:

Group   Time
1       01:40:00
1       01:32:00
2       00:56:31

我希望我的输出是:

Group   Time
1       01:36:00
2       00:56:31

运行dtype时,组和时间都存储为对象。

我已经读了一些书,据说您只能通过将数据转换为hh:mm:ss:ms来做到这一点。我尝试使用timedelta函数,但没有运气。

def rreplace(s, old, new, occurrence):
    li = s.rsplit(old, occurrence)
    return new.join(li)
df['New Time']=pd.to_timedelta(df['Time'].apply(lambda x: rreplace('00:{}'.format(x), ':', '.', 1)))

df.groupby(['Group'])['New Time'].mean()

现在,我知道这段代码将其向下推。即秒现在是毫秒。但是我想这样做相反,并以hh:mm:ss:ms格式向我显示正确的hh:mm:ss时间,以便可以对其执行数学运算。

任何帮助将不胜感激。谢谢!

python pandas dataframe group-by timedelta
1个回答
0
投票

为我工作:

df['New Time'] = pd.to_timedelta(df['Time'])
df = df.groupby(['Group'])['New Time'].agg(['sum','size'])
df = df['sum'].div(df['size']).reset_index(name='Time')
print (df)
   Group     Time
0      1 01:36:00
1      2 00:56:31
© www.soinside.com 2019 - 2024. All rights reserved.