熊猫,时间数据''或空格与格式不匹配

问题描述 投票:0回答:1

我正在尝试执行以下操作以将我的数据20220620转换为2022-06-20 00:00:00。唯一的问题是,我相信我专栏中的空白会导致我出现此错误:time data '' does not match format '%Y%m%d' (match)

这是我正在尝试的内容,

 d7['date'] = pd.to_datetime(d7['date'], format='%Y%m%d').dt.strftime('%Y-%m-%d %H:%M:%S.%f', errors='coerce')

试图绕过我行中的空白。

我知道这些线程上有很多线程,但是我没有找到一个寻址time data ''的线程。

样本数据:

       Date
0  20191101
1          
2  20191104

预期:

2019-11-01 00:00:00

任何帮助将不胜感激。

python pandas
1个回答
1
投票

首先,您应该考虑空白值以及您要如何处理它们。然后从errors='coerce'中删除.dt.strftime,因为它不是该方法的有效参数。您想将errors='coerce'添加到pd.to_datetime部分:

d7['date'] = pd.to_datetime(d7['date'], format='%Y%m%d', errors='coerce')\
               .dt.strftime('%Y-%m-%d %H:%M:%S.%f')

0
投票

样本数据:

x = pd.DataFrame(data=['20191101', '20191104', '20191201', '', '20191205'], columns=['Date'])
x
       Date
0  20191101
1  20191104
2  20191201
3          
4  20191205

使用pd.to_datetime将字符串转换为时间,然后使用dt.strftime方法格式化输出:

pd.to_datetime(x['Date']).dt.strftime('%Y-%m-%d %H:%M:%S.%f')

0    2019-11-01 00:00:00.000000
1    2019-11-04 00:00:00.000000
2    2019-12-01 00:00:00.000000
3                           NaT
4    2019-12-05 00:00:00.000000
Name: Date, dtype: object

Link to strftime resource with the different time codes

© www.soinside.com 2019 - 2024. All rights reserved.