繁体   English   中英

如何修复熊猫中的此日期时间错误?

[英]How do I fix this datetime error in pandas?

我有一个充满日期的数据框。 但是,其中一些的格式与其他格式不同。 例如,我有以下格式的

2010-01-22

我也有以下格式的

2010-22-1

当我使用

df['date'] = pd.to_datetime(df['date'])

我收到错误

month must be in 1..12: 2010-22-1

我怎样才能解决这个问题?

您可以使用df['date'].apply(your_function)并编写your function ,该your function将尝试解析year-month-day ,如果捕获错误,它将尝试解析year-day-month


最小的例子

import pandas as pd
import datetime

def convert(item):
    #print(item)
    
    try:
        return datetime.datetime.strptime(item, "%Y-%m-%d")
    except Exception as ex:
        print('Exception:', ex)
        try:
            return datetime.datetime.strptime(item, "%Y-%d-%m")
        except Exception as ex:
            print('Exception:', ex)

    print('not converted:', item)    
    return item

# --- main --

data = {
    'date': ['2010-01-22','2010-22-01', '2021-11-05'], 
}

df = pd.DataFrame(data)
print(df)
print(df.dtypes)


df['date'] = df['date'].apply(convert)
 
print(df)
print(df.dtypes)

结果:

        date
0  2010-01-22
1  2010-22-01
2  2021-11-05

date    object
dtype: object

Exception: time data '2010-22-01' does not match format '%Y-%m-%d'

        date
0 2010-01-22
1 2010-01-22
2 2021-11-05

date    datetime64[ns]
dtype: object

编辑:

如果您有更多格式,则可以使用for -loop

def convert(item):
    #print(item)

    for pattern in ["%Y-%m-%d", "%Y-%d-%m"]:    
        try:
            return datetime.datetime.strptime(item, pattern)
        except Exception as ex:
            print('Exception:', ex)

    print('not converted:', item)    
    return item

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM