【问题标题】:Python Pandas Debugging on to_datetimePython Pandas 在 to_datetime 上调试
【发布时间】:2017-02-01 01:53:11
【问题描述】:

数百万条数据记录在我的数据框中。我必须将字符串列转换为日期时间。我这样做如下:

allData['Col1'] = pd.to_datetime(allData['Col1'])

但是,有些字符串不是有效的日期时间字符串,因此我得到一个值错误。我不是很擅长用 Python 进行调试,所以我很难找到某些数据项不可转换的原因。

我需要 Python 向我显示行号,以及不可转换的值,而不是抛出一个无用的错误,什么都不告诉我。我怎样才能做到这一点?

【问题讨论】:

    标签: python string datetime debugging pandas


    【解决方案1】:

    您可以将boolean indexingisnull 创建的to_datetime 与参数errors='coerce' 一起检查NaT 值的条件一起使用 - 它创建NaT,其中日期时间无效:

    allData1 = allData[pd.to_datetime(allData['Col1'], errors='coerce').isnull()]
    

    示例:

    allData = pd.DataFrame({'Col1':['2015-01-03','a','2016-05-08'],
                            'B':[4,5,6],
                            'C':[7,8,9],
                            'D':[1,3,5],
                            'E':[5,3,6],
                            'F':[7,4,3]})
    
    print (allData)
       B  C        Col1  D  E  F
    0  4  7  2015-01-03  1  5  7
    1  5  8           a  3  3  4
    2  6  9  2016-05-08  5  6  3
    
    print (pd.to_datetime(allData['Col1'], errors='coerce'))
    0   2015-01-03
    1          NaT
    2   2016-05-08
    Name: Col1, dtype: datetime64[ns]
    
    print (pd.to_datetime(allData['Col1'], errors='coerce').isnull())
    0    False
    1     True
    2    False
    Name: Col1, dtype: bool
    
    
    allData1 = allData[pd.to_datetime(allData['Col1'], errors='coerce').isnull()]
    print (allData1)
       B  C Col1  D  E  F
    1  5  8    a  3  3  4
    

    【讨论】:

    • 由于某种原因,如果检测到一个错误,则将整列设为 NaT。有任何想法吗? allData['GPS_DateTime'] = pd.to_datetime(allData['GPS_DateTime'], errors='coerce') errorData = allData[allData['GPS_DateTime'].isnull()]
    • 我认为你需要交换它:errorData = allData[allData['GPS_DateTime'].isnull()] 仅用于检查,所以先检查它然后通过allData['GPS_DateTime'] = pd.to_datetime(allData['GPS_DateTime'], errors='coerce')转换为日期时间
    • allData['GPS_DateTime'] = pd.to_datetime(allData['GPS_DateTime'], errors='coerce') 给出一整列 NaT
    • 如果不是机密数据,您可以将您的数据以 csv 格式发送到我的个人资料中的电子邮件吗?
    • 还有其他代码乱七八糟 - 不幸的是,它是机密信息。看看能不能找到问题
    猜你喜欢
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2021-04-15
    • 2021-11-24
    • 2018-11-30
    • 2020-12-11
    相关资源
    最近更新 更多