关于 pandas 解析 json 文件和其他类型文件的结果中日期格式数据类型不一致的问题

导读:本篇文章讲解 关于 pandas 解析 json 文件和其他类型文件的结果中日期格式数据类型不一致的问题,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

问题:

我有两个文件,一个 .csv 文件和一个 .json 文件,数据截图分别如下:
在这里插入图片描述

在这里插入图片描述
我的目的是解析这些文件,并将结果统一交由下一个程序块进行处理。

在了解到 pandas 可以解析数据文件(csv、txt、json、xml、excel、html、fwf、spss等),于是选择 read_json 函数read_csv 函数分别解析 json 文件和 xml 文件。

但使用 pandas 的函数进行解析后,发现 json 文件和其他类型文件(例如 txt、csv、xml)中日期格式数据(例如 2020-02-01 )的解析结果类型不一致的问题:

import pandas as pd

def paras_file_json(filename):
    with open(filename, 'r') as f:
        df = pd.read_json(f)
        return df


def paras_file_csv(filename):
    with open(filename, 'r') as f:
        df = pd.read_csv(f)
        return df


def paras_file_xml(filename):
    with open(filename, 'r') as f:
        df = pd.read_xml(f)
        return df


df_json = paras_file_json('data.json')
df_csv = paras_file_csv('data.csv')
df_xml = paras_file_xml('data.xml')
print(df_json['date'].dtype)    # -> datetime64[ns]
print(df_csv['date'].dtype)     # -> object
print(df_xml['date'].dtype)     # -> object

在不涉及解析结果数据类型处理的操作中,这不会有什么问题,因为数据本身没有发生任何变化。
我需要根据解析结果的数据类型进行进一步的操作,如果不解决,实际上也只需要多加一层的类型判断。

原因分析:

一般来说,类似于 pandas 的这些数据处理库会保证数据解析结果的一致性,就可以排除是源码的不同实现结果造成的问题。

更多的情况应该是不同的设置导致的问题,于是仔细研读了 read_json 函数的参数列表,发现两个有意思的参数 convert_dateskeep_default_dates

根据该函数文档的说法,convert_dateskeep_default_dates 两者相互配合来决定是否以及解析哪些类似于日期数据的列。

默认情况下,二者均为 True,实际解析效果如下:

'2014-12-12' 解析为 '2014-12-12T00:00:00.000000000''05:41:45' 解析为 '2022-09-09T05:41:45.000000000''2008-05-1420:03:48' 解析为 '2008-05-14T20:03:48.000000000'

此时,这些解析结果的数据类型就为 datetime64[ns]

当我们解析时设置 keep_default_dates=False ,pandas 就不再主动解析这类数据,其解析结果的数据类型就和从其他文件中解析而来的结果一样都是 object 了。

解决:

关闭默认解析日期时间数据即可:

import pandas as pd

def paras_file_json(filename):
    with open(filename, 'r') as f:
        df = pd.read_json(f, keep_default_dates=False)
        return df

还请仔细阅读文档

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/98037.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!