今天,当从数据文件(例如)读取数据时,pandas能够识别值的类型,这让我感到非常惊讶:
df=pandas.read\u csv('test.dat',delimiter=r“\s+”,name=['col1','col2','col3']))
例如,可以通过以下方式进行检查:
df.iterrows()中i,r的
:
打印类型(r['col1']、类型(r['col2']、类型(r['col3']))
特别是整数、浮点数和字符串被正确识别。但是,我有一个列的日期格式如下:2013-6-4。这些日期被识别为字符串(而不是python日期对象)。有没有一种方法可以“学习”熊猫识别日期
阅读时应该添加parse_dates=True,或者parse_dates=['column name'],这通常足以神奇地解析它。但总有一些奇怪的格式需要手动定义。在这种情况下,还可以添加日期解析器函数,这是最灵活的方法
假设字符串中有一列“datetime”,则:
从日期时间导入日期时间
dateparse=lambda x:datetime.strTime(x,“%Y-%m-%d%H:%m:%S”)
df=pd.read\u csv(infle,parse\u dates=['datetime'],date\u parser=dateparse)
通过这种方式,您甚至可以将多个列合并到单个datetime列中,从而将“date”和“time”列合并到单个“datetime”列中:
dateparse=lambda x:datetime.strtime(x,“%Y-%m-%d%H:%m:%S”)
df=pd.read\u csv(infle,parse\u dates={'datetime':['date','time']},date\u parser=dateparse)
您可以在此页面中找到strtime和strftime的指令(即用于不同格式的字母)