繁体   English   中英

Pandas DateTime - 将可以为“0”的字符串转换为日期时间

[英]Pandas DateTime - convert string which can be "0" to datetime

我使用的列如下所示:

ID 日期
1 20220104
2 0
3 20220506
4 20220206

日期列是一个“对象”类型,包含字符串值。 请注意,此列可以保存“0”作为值。

我的代码应该将字符串值转换为日期时间:

def transform_column(data,spec)
    """
    data: the dataframe
    spec: date format I would like it to look like in the end
    """

    data = chunk[spec[1]].apply(str)
    data = pd.to_datetime(data, format=spec[2])

    return data.dt.strftime(spec[3])

配置看起来像这样(因此您对 spec 参数中预期的格式有所了解):

"COLUMN_NAME": ["日期", "COLUMN_NAME", "%Y%m%d", "%m/%d/%Y"]

我想询问如何解决此数据中的“0”字符串的想法,因此转换适用于格式正确的字符串,并将 NAN 或 Null 或其他东西放在“0”的位置。 当 pd.to_datetime 应该能够转换整个列时,它可以更好地工作的值是多少? 真的有可能吗?

先感谢您!

to_datetime中使用参数errors='coerce' ,不需要转换为字符串:

def transform_column(data,spec):
    """
    data: the dataframe
    spec: date format I would like it to look like in the end
    """

    data[spec[0]] = (pd.to_datetime(data[spec[0]], format=spec[2], errors='coerce')
                       .dt.strftime(spec[3]))
    return data



d = {"col" : ["date", "COLUMN_NAME", "%Y%m%d", "%m/%d/%Y"]}

df = transform_column(df,d['col'])
print (df)
   id        date
0   1  01/04/2022
1   2         NaN
2   3  05/06/2022
3   4  02/06/2022

如果你想串:

df1['date'] = df1['date'].astype(str)
df1['newD'] = df1['date'].str[:4] + '-' + df1['date'].str[5:6] + '-' + 
df1['date'].str[7:8]

暂无
暂无

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

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