Python Pandas,Datetime NaT移除并替换为None,&x27;str';对象没有属性';strftime';
我正在使用以下方式将日期从yyyymmdd转换为yyyy mm dd hh:mm:ss:Python Pandas,Datetime NaT移除并替换为None,&x27;str';对象没有属性';strftime';,python,pandas,Python,Pandas,我正在使用以下方式将日期从yyyymmdd转换为yyyy mm dd hh:mm:ss: d7['date'] = pd.to_datetime(d7['date'], format='%Y%m%d', errors='coerce').dt.strftime('%Y-%m-%d %H:%M:%S.%f') 但是我得到一个错误:AttributeError:'str'对象没有属性'strftime' 我已经尝试过实现它,但是很难将它与上面的格式结合起来 在“我的日期”列中,我将获得日期,如20
d7['date'] = pd.to_datetime(d7['date'], format='%Y%m%d', errors='coerce').dt.strftime('%Y-%m-%d %H:%M:%S.%f')
但是我得到一个错误:AttributeError:'str'对象没有属性'strftime'
我已经尝试过实现它,但是很难将它与上面的格式结合起来
在“我的日期”列中,我将获得日期,如2028-01-31 00:00:00.000000
或NaT
,我想将NaT设置为空白或None
示例数据帧:
2019-11-01 00:00:00.000000
2019-11-01 00:00:00.000000
2019-11-01 00:00:00.000000
2019-11-04 00:00:00.000000
2019-11-01 00:00:00.000000
2019-11-01 00:00:00.000000
2019-11-01 00:00:00.000000
2019-11-01 00:00:00.000000
2019-11-01 00:00:00.000000
NaT
谢谢。- “我正在将日期从yyyymmdd转换为yyyy mm dd hh:mm:ss”,因此20180101是初始日期格式的一个示例
- 需要一种日期时间格式,但
pd.to_datetime(d7['date',格式='%Y%m%d',errors='concurve').dt.strftime('%Y-%m-%d%H:%m:%S.%f')创建一个字符串
将熊猫作为pd导入
#样本数据
df=pd.DataFrame({'date':['20180101',''20190101']})
#测向视图
日期
0 20180101
1.
2 20190101
#转换为日期时间格式
df.date=pd.to_datetime(df.date,格式=“%Y%m%d”,错误=”强制“)
#测向视图
日期
0 2018-01-01
1纳特
2 2019-01-01
#从链接应用方法
#如果要使用NoneType,请使用None。如果需要字符串,请使用“无”
df.date=df.date.apply(lambda x:x.strftime(“%Y-%m-%d%H:%m:%S”),如果不是pd.isnull(x),则为无)
#最终产量
日期
0 2018-01-01 00:00:00
1无
2 2019-01-01 00:00:00
要查找问题行,请尝试以下代码
- 该函数将返回一个
,str
或打印导致AttributeError的任何“日期”行None
df=pd.DataFrame({'date':['20180101','20190101','abcd',3456]})
df.date=pd.to_datetime(df.date,格式=“%Y%m%d”,错误=”强制“)
#从日期时间格式转换为字符串格式
def转换(x)->(str,无):
尝试:
如果不是pd,则返回x.strftime(“%Y-%m-%d%H:%m:%S”)。如果不是pd.isnull(x),则无
除属性错误外:
一无所获
打印(x)
#应用函数
df.date=df.date.apply(λx:convert(x))
#输出测向
日期
0 2018-01-01 00:00:00
1无
2 2019-01-01 00:00:00
3无
4无
如果包含原始数据,将非常有用。请“另外一个好处是删除我日期中的尾随.0。”您正在使用.dt.strftime(“%Y-%m-%d%H:%m:%S.%f”)
。Drop%f
“我正在使用以下命令将日期从yyyymmdd转换为yyyy mm dd hh:mm:ss:“您刚才发布的内容与原始数据不一样。发布原始数据。感谢您提供有关删除%f
的提示。我的整个df有许多列和行。您需要完整的数据帧吗?我的第一个NaT要到第30000行才来,所以我只是把它和一些日期放在一起给你,用None替换NaT的目的是什么?你想删除这些行吗?嘿,特伦顿,我做这件事时仍然会遇到同样的错误str对象没有属性strftime
@excelguy,那么问题中没有包含的数据可能有问题。如果你把数据贴在某个地方,我可以看一下,否则我没有其他建议