如何用Python自动计算日期间隔,实现Discord语音通话时长统计
实现方案
推荐用Python的pandas库完成批量处理,10行左右代码就能跑通:
- 第一步先安装依赖库:
pip install pandas - 第二步使用以下代码处理数据:
import pandas as pd # 读取原始csv数据 df = pd.read_csv('你的原始文件路径.csv') # 将datetime列转换为时间格式,方便后续计算 df['datetime'] = pd.to_datetime(df['datetime']) # 按用户、时间升序排序,保证同一个用户的join记录在leave前面 df = df.sort_values(by=['user', 'datetime']).reset_index(drop=True) # 按用户分组处理 result = [] for user, group in df.groupby('user'): # 过滤有效记录:必须同时有join和leave两条 if len(group) == 2: join_time = group[group['action'] == 'join']['datetime'].iloc[0] leave_time = group[group['action'] == 'leave']['datetime'].iloc[0] # 计算时长,这里示例保留分钟单位,你可以按需调整为秒/小时 duration = round((leave_time - join_time).total_seconds() / 60, 2) result.append({ 'user': user, 'join_time': join_time.strftime('%Y-%m-%d %H:%M:%S'), 'duration_minutes': duration }) # 转成DataFrame导出为新csv result_df = pd.DataFrame(result) result_df.to_csv('处理后的通话时长统计.csv', index=False, encoding='utf-8-sig')
- 可选调整项:
如果你需要时长的单位是秒,直接去掉除以60的逻辑即可;如果有用户存在多条进出记录,也可以在分组逻辑里加循环配对相邻的join、leave记录。
内容的提问来源于stack exchange,提问作者user14504834
相关产品推荐
相关产品推荐

