熊猫带有时区的时间戳记

时间:2019-07-10 22:08:31

标签: python pandas datetime timezone

我正在从Java源读取数据。我最终得到以下数据框:

df.head()

    open        timestamp
0   1.13550     2019-02-24T17:00-06:00[US/Central]
1   1.13570     2019-02-24T17:05-06:00[US/Central]
2   1.13560     2019-02-24T17:10-06:00[US/Central]
3   1.13565     2019-02-24T17:15-06:00[US/Central]
4   1.13570     2019-02-24T17:20-06:00[US/Central]

df.dtypes

open        float64
timestamp   object
dtype: object

如何在Pandas中将带有时区的列时间戳转换为Datetime? 熊猫有这种东西吗?

我找到了这篇文章,但它似乎无法解析时区,请稍后再添加时区。 How to read datetime with timezone in pandas

欢迎任何帮助/提示

2 个答案:

答案 0 :(得分:1)

您可以尝试删除[...]部分,然后将其传递给to_datetime

pd.to_datetime(df.timestamp.str.extract('(.*)\[.*\]')[0])

返回:

0   2019-02-24 17:00:00-06:00
1   2019-02-24 17:05:00-06:00
2   2019-02-24 17:10:00-06:00
3   2019-02-24 17:15:00-06:00
4   2019-02-24 17:20:00-06:00
Name: 0, dtype: datetime64[ns, pytz.FixedOffset(-360)]

您可以通过在正则表达式模式中再添加一个捕获组来保留时区标签:

pattern = '(?P<time>.*)\[(?P<zone>.*)\]'
new_df = df.timestamp.str.extract(pattern)

然后new_df是:

                     time        zone
0  2019-02-24T17:00-06:00  US/Central
1  2019-02-24T17:05-06:00  US/Central
2  2019-02-24T17:10-06:00  US/Central
3  2019-02-24T17:15-06:00  US/Central
4  2019-02-24T17:20-06:00  US/Central

您可以将time转换为pd.to_datetime

答案 1 :(得分:1)

单向

pd.to_datetime(df.timestamp.str.split('[').str[0])
Out[137]: 
0   2019-02-24 17:00:00-06:00
1   2019-02-24 17:05:00-06:00
2   2019-02-24 17:10:00-06:00
3   2019-02-24 17:15:00-06:00
4   2019-02-24 17:20:00-06:00
Name: timestamp, dtype: datetime64[ns, pytz.FixedOffset(-360)]