加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在pandas.read_csv中使用空值处理解析日期?

发布时间:2020-12-20 12:13:26 所属栏目:Python 来源:网络整理
导读:考虑以下组成的CSV: from io import StringIOdata = """value,date7,null7,10/18/2008621,(null)"""fake_file = StringIO(data) 我想使用pandas.read_csv读取此文件,使用na_values参数处理空值,使用parse_dates和date_parser处理日期: import pandas as pd
考虑以下组成的CSV:

from io import StringIO

data = """value,date
7,null
7,10/18/2008
621,(null)"""

fake_file = StringIO(data)

我想使用pandas.read_csv读取此文件,使用na_values参数处理空值,使用parse_dates和date_parser处理日期:

import pandas as pd

date_parser = lambda c: pd.datetime.strptime(c,'%m/%d/%Y')

df = pd.read_csv(fake_file,parse_dates=['date'],date_parser=date_parser,na_values=['null','(null)'])

在Python 3.5中运行此代码给了我:

File "<ipython-input-11-aa5bcf0858b7>",line 1,in <lambda>
    date_parser = lambda c: pd.datetime.strptime(c,DATE_FMT)

TypeError: strptime() argument 1 must be str,not float

所以似乎首先处理空值然后尝试解析日期…

我知道我可以这样做:

df = pd.read_csv(fake_file,'(null)'])
df['date'] = pd.to_datetime(df['date'],format='%m/%d/%Y')

但我真正的问题是如何一举处理日期格式化和NaN处理……

解决方法

使用 to_datetime格式和错误=’coerce’:

date_parser = lambda c: pd.to_datetime(c,format='%m/%d/%Y',errors='coerce')
df = pd.read_csv(fake_file,date_parser=date_parser)
print (df)
   value       date
0      7        NaT
1      7 2008-10-18
2    621        NaT

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读