【发布时间】:2021-11-11 18:31:52
【问题描述】:
df['diff']
- 23:59:01
- 23:59:13
- 23:59:17
- 23:59:27
- 23:59:52
hh-mm-ss 数据是通过 TimesDelta 计算会话之间的差异后获得的。 将时间转换为秒并找到中位数。如何找到 hh-mm-ss 格式的中位数?
【问题讨论】:
标签: python pandas dataframe median
df['diff']
hh-mm-ss 数据是通过 TimesDelta 计算会话之间的差异后获得的。 将时间转换为秒并找到中位数。如何找到 hh-mm-ss 格式的中位数?
【问题讨论】:
标签: python pandas dataframe median
diff 列需要转换为数字秒数。
import pandas as pd
def time2sec(t):
(h, m, s) = t.split(':')
return int(h) * 3600 + int(m) * 60 + int(s)
df = pd.DataFrame(['23:59:01','23:59:13','23:59:17','23:59:27','23:59:52'],columns=['diff'])
df['diff_sec'] = df['diff'].map(time2sec)
print(df)
median = df['diff_sec'].median()
print('median :',median)
diff diff_sec
0 23:59:01 86341
1 23:59:13 86353
2 23:59:17 86357
3 23:59:27 86367
4 23:59:52 86392
86357.0
【讨论】:
如果您的数据已经是您提到的 Timedelta 格式,您可以使用 df.median() 获取系列的中位数。
【讨论】:
你可以试试:
pd.to_timedelta(df['diff']).median()
pd.to_timedelta 将日期字符串转换为 Timedelta。然后,我们可以使用Series.median() 得到中位数。
结果:
Timedelta('0 days 23:59:17')
【讨论】: