Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas,Datetime NaT移除并替换为None,&x27;str';对象没有属性';strftime';_Python_Pandas - Fatal编程技术网

Python Pandas,Datetime NaT移除并替换为None,&x27;str';对象没有属性';strftime';

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

我正在使用以下方式将日期从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'

我已经尝试过实现它,但是很难将它与上面的格式结合起来

在“我的日期”列中,我将获得日期,如
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
    None
    或打印导致AttributeError的任何“日期”行
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,那么问题中没有包含的数据可能有问题。如果你把数据贴在某个地方,我可以看一下,否则我没有其他建议