[英]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.