在 Pandas 中解析带有 JSON 时差的 DateTime

Posted

技术标签:

【中文标题】在 Pandas 中解析带有 JSON 时差的 DateTime【英文标题】:Parsing DateTime with Time Difference for JSON in Pandas 【发布时间】:2021-05-10 15:28:35 【问题描述】:

我在 Pandas 中从 JSON 文件中读取了以下日期时间

datetime    
0   2021-02-04 09:15:00+05:30   
1   2021-02-04 09:16:00+05:30   
2   2021-02-04 09:17:00+05:30   
3   2021-02-04 09:18:00+05:30   
4   2021-02-04 09:19:00+05:30   

我尝试使用以下 sn-p 来解析日期时间,但没有任何区别。

data = pd.read_json ('dataset.json', convert_dates=['datetime'])

这是我的预期输出

datetime    
0   2021-02-04 14:45:00 
1   2021-02-04 14:46:00 
2   2021-02-04 14:47:00 
3   2021-02-04 14:48:00 
4   2021-02-04 14:49:00 

请指教。

【问题讨论】:

请注意,2021-02-04 09:15:00+05:30 表示当地时间 9:15,比 UTC 晚 5:30 小时。将其转换为 14:45 意味着您想再次添加 UTC 偏移量 - 老实说,这对我来说没有多大意义。 【参考方案1】:

您可以将 UTC 偏移量作为时间增量添加到现有日期时间,本地化为无:

df['localtime'] = pd.Timedelta(minutes=df['datetime'].dt.tz._minutes) + df['datetime'].dt.tz_localize(None)

df 
                   datetime           localtime
0 2021-02-04 09:15:00+05:30 2021-02-04 14:45:00
1 2021-02-04 09:16:00+05:30 2021-02-04 14:46:00
2 2021-02-04 09:17:00+05:30 2021-02-04 14:47:00
3 2021-02-04 09:18:00+05:30 2021-02-04 14:48:00
4 2021-02-04 09:19:00+05:30 2021-02-04 14:49:00

另见Convert pandas timezone-aware DateTimeIndex to naive timestamp, but in certain timezone。

【讨论】:

tz._minutes 似乎有问题 @Luke ...那会是什么? ^^

以上是关于在 Pandas 中解析带有 JSON 时差的 DateTime的主要内容,如果未能解决你的问题,请参考以下文章

解析嵌套的 JSON 并迭代到 Pandas Dataframe

用正确的 Dtype 将带有无意义键的 json 读入 pandas data.frame

将带有嵌套字典的json响应转换为pandas数据框[重复]

Pandas - 合并具有时差的行(当 datetime 为索引时)

如何从带有列表的嵌套 Json 创建 pandas DataFrame

使用 pandas 解析 json 行