Python 在数据框的行中添加时间,并在数据框的新列中追加总时间

Python 在数据框的行中添加时间,并在数据框的新列中追加总时间,python,pandas,Python,Pandas,我正在创建一个如下所示的数据帧 df1 = df =pd.DataFrame({'Month_Year':['January_208','January_208','January_208','Febuary_208','Febuary_208'], 'Date':['11','11','12','15','15'], 'Video_Name':['17-29_202100000.avi','17-29_2055500000

我正在创建一个如下所示的数据帧

df1 = df =pd.DataFrame({'Month_Year':['January_208','January_208','January_208','Febuary_208','Febuary_208'],
                  'Date':['11','11','12','15','15'],
                  'Video_Name':['17-29_202100000.avi','17-29_2055500000.avi','17-29_202150000.avi','17-29_202145000.avi','17-29_202100000.avi'],
                  'Video_Length':['55:11:12','222:10:05','22:02:01','11:00:03','34:20:32'],
                  
})
所以数据帧就像 现在,如果月份、年份和日期相同,则希望添加
视频长度的时间
列,并希望将这些值附加到datafram的新列中,即
总时间
例如,对于第1行和第2行,我们有相同的月份和日期,我们希望在第4行和第5行的新列total_time中添加时间和追加时间。预期输出

用于将值转换为时间增量,然后与
sum
一起用于由聚合值填充的新列,并通过final
timedelta
s的自定义函数最后更改格式:

df1['Video_Length'] = pd.to_timedelta(df1['Video_Length'])

def format_timedelta(x):
    ts = x.total_seconds()
    hours, remainder = divmod(ts, 3600)
    minutes, seconds = divmod(remainder, 60)
    return ('{}:{:02d}:{:02d}').format(int(hours), int(minutes), int(seconds)) 
    

df1['Total_time'] = (df1.groupby(['Month_Year','Date'])['Video_Length'].transform('sum')
                        .apply(format_timedelta))
print (df1)
    Month_Year Date            Video_Name    Video_Length Total_time
0  January_208   11   17-29_202100000.avi 2 days 07:11:12  277:21:17
1  January_208   11  17-29_2055500000.avi 9 days 06:10:05  277:21:17
2  January_208   12   17-29_202150000.avi 0 days 22:02:01   22:02:01
3  Febuary_208   15   17-29_202145000.avi 0 days 11:00:03   45:20:35
4  Febuary_208   15   17-29_202100000.avi 1 days 10:20:32   45:20:35

你能添加预期的输出吗?最后,新栏目的外观如何?@jezrael我已经更新了新栏目的外观Hii感谢这正在工作如果我们想再增加一个栏目,该怎么办?比如说total_month,它给出了整个月视频长度的总和假设fr前三行是1月份,那么它将添加og 3行的所有三个视频长度,并形成一个新的column@k_p-然后使用
df1['Total_time_monthly']=(df1.groupby(['Month_Year'])['Video_Length']。转换('sum')。应用(format_timedelta))
df1['Video_Length']=df1['Video_Length']。最后的apply(format_timedelta)行将删除日期并保留原始时间格式