【问题标题】:how to aggregate time in pandas如何在熊猫中汇总时间
【发布时间】:2018-09-27 14:45:22
【问题描述】:

我在一个大型 csv 文件中有一个列,其时间戳格式为 %H:%M:%S。从时间戳列表中获取聚合(如平均值、中值、25%、75% 等)的最佳方法是什么。

df = pd.DataFrame({'key': ['a', 'b', 'c'], 'value': [5, 4, 3], 'time1':['9:30:41', '10:00:56', '13:01:09']})

【问题讨论】:

  • 你想如何聚合它们?以分钟、小时、准确时间为单位……?
  • 时间戳更好

标签: pandas dataframe timestamp string-aggregation


【解决方案1】:

您可以使用time delta将字符串转换为时间段,它将允许arithmetic operation对时间戳进行加减,

df.time1 = pd.to_timedelta(df.time1)
df.sum()

输出:

key                  abc
time1    1 days 08:32:46
value                 12
dtype: object

但是对于乘法和除法包括mean and other,你可以转换timestamp to seconds并应用

df.time1 = pd.to_timedelta(df.time1)/np.timedelta64(1, 's')

输出:

    key time1   value
0   a   34241.0 5
1   b   36056.0 4
2   c   46869.0 3

完成所需操作后,您可以使用pd.to_timedelta with 'seconds' unit 转换回时间戳

pd.to_timedelta(df.time1,unit='s')

输出:

0   09:30:41
1   10:00:56
2   13:01:09
Name: time1, dtype: timedelta64[ns]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2020-06-08
    • 1970-01-01
    • 2021-03-06
    • 2018-05-08
    相关资源
    最近更新 更多