【问题标题】:Working with dates in pandas在 pandas 中处理日期
【发布时间】:2013-12-17 10:02:12
【问题描述】:

我这几天一直在收集 Twitter 数据,除此之外,我需要分析内容是如何传播的。当用户对内容感兴趣时,我创建了一个时间戳列表,并在 pandas df 中使用列名“timestamps”导入了 twitter 时间戳。它看起来像这样:

0     Sat Dec 14 05:13:28 +0000 2013
1     Sat Dec 14 05:21:12 +0000 2013
2     Sat Dec 14 05:23:10 +0000 2013
3     Sat Dec 14 05:27:54 +0000 2013
4     Sat Dec 14 05:37:43 +0000 2013
5     Sat Dec 14 05:39:38 +0000 2013
6     Sat Dec 14 05:41:39 +0000 2013
7     Sat Dec 14 05:43:46 +0000 2013
8     Sat Dec 14 05:44:50 +0000 2013
9     Sat Dec 14 05:47:33 +0000 2013
10    Sat Dec 14 05:49:29 +0000 2013
11    Sat Dec 14 05:55:03 +0000 2013
12    Sat Dec 14 05:59:09 +0000 2013
13    Sat Dec 14 05:59:45 +0000 2013
14    Sat Dec 14 06:17:19 +0000 2013

等等。我想做的是每 10 分钟采样一次,并计算每个时间范围内有多少用户对内容感兴趣。我的问题是我不知道如何处理从 Twitter 导入的时间戳。我应该使用正则表达式还是有更好的方法呢?如果有人可以提供一些指示,我将不胜感激。谢谢!

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    这是ISO日期格式,可以用pd.to_datetime轻松转换为日期时间:

    >>> df[:2]
                            timestamp
    0  Sat Dec 14 05:13:28 +0000 2013
    1  Sat Dec 14 05:21:12 +0000 2013
    
    >>> df['timestamp'] = pd.to_datetime(df['timestamp'])
    >>> df[:2]
                  timestamp
    0   2013-12-14 05:13:28
    1   2013-12-14 05:21:12
    

    要重新采样,您可以将其设为索引,并使用resample

    >>> df.index = df['timestamp']
    >>> df.resample('20Min', 'count')
    2013-12-14 05:00:00  timestamp    1
    2013-12-14 05:20:00  timestamp    5
    2013-12-14 05:40:00  timestamp    8
    2013-12-14 06:00:00  timestamp    1
    dtype: int64
    

    【讨论】:

    • 谢谢!还有一个问题。我如何采样这个df?我需要查看有多少用户以 10 分钟间隔(或任何间隔)请求内容。如何找到从 5:13:28 到 5:23:28 的所有元素? (如果您可以向我指出任何教程或文档)。我从未在 pandas 中使用过时间。
    • @Anastasia 有内置的重采样方法,请参阅我的答案中的示例和文档链接。
    猜你喜欢
    • 2022-08-08
    • 2019-01-08
    • 2012-08-05
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多