python – 用pandas read_csv读取丢失日期的最安全的方法 – 给
发布时间:2020-12-20 11:33:41 所属栏目:Python 来源:网络整理
导读:py2.7 熊猫版.13 读取csv并将列转换为日期的最安全的方法是什么. 我注意到在我的情况下,日期列中的空格被转换为今天的日期.为什么? 这是我的csv数据 fake_file = StringIO.StringIO("""case,opdate,7,10/18/2006,10/18/2008,621,""") 这是我的代码 df=pd.Da
py2.7
熊猫版.13 读取csv并将列转换为日期的最安全的方法是什么. 这是我的csv数据 fake_file = StringIO.StringIO("""case,opdate,7,10/18/2006,10/18/2008,621,""") 这是我的代码 df=pd.DataFrame(pd.read_csv('path.csv',parse_dates=['opdate'])) 用今天的日期悲惨填满白色空间! df=pd.DataFrame(pd.read_csv('path.csv',parse_dates=['opdate'],na_values=' ')) 工作,但我真的必须知道它总是”,而不是说”或’null’. 转换日期和保留空值最安全的方法是什么(特别是当null不是一致的值时)? 解决方法
一种方法是将一个不同的日期解析器传递给
read_csv(我也抛出一个null):
fake_file = StringIO.StringIO("""case,null,""") In [11]: parser = lambda x: pd.to_datetime(x,format='%m/%d/%Y',coerce=True) In [12]: pd.read_csv(fake_file,date_parser=parser) Out[12]: case opdate Unnamed: 2 0 7 NaT NaN 1 7 2008-10-18 NaN 2 621 NaT NaN [3 rows x 3 columns] 另一个选择是使用to_datetime转换为事后的日期: In [21]: df = pd.read_csv(fake_file) In [22]: pd.to_datetime(df.opdate,format='%m/%d/%Y') ValueError: time data 'null' does not match format '%m/%d/%Y' In [23]: pd.to_datetime(df.opdate,coerce=True) Out[23]: 0 NaT 1 2008-10-18 2 NaT Name: opdate,dtype: datetime64[ns] In [24]: df['opdate'] = pd.to_datetime(df.opdate,coerce=True) 我认为to_datetime和read_csv将空白/空格转换为今天的日期是definitely a bug … (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |