今天,我对以下事实感到非常惊讶:从数据文件中读取数据(例如)pandas能够识别值的类型:
df = pandas.read_csv('test.dat', delimiter=r"\s+", names=['col1','col2','col3'])
Run Code Online (Sandbox Code Playgroud)
例如,可以通过以下方式检查:
for i, r in df.iterrows():
print type(r['col1']), type(r['col2']), type(r['col3'])
Run Code Online (Sandbox Code Playgroud)
特别是整数,浮点数和字符串被正确识别.但是,我有一个列具有以下格式的日期:2013-6-4.这些日期被识别为字符串(而不是python日期对象).有没有办法"学习"大熊猫到公认的日期?
由于matplotlib不支持任何pandas.TimeStamp 或者numpy.datetime64,有没有简单的解决办法,我决定到本地大熊猫日期列转换为纯Python datetime.datetime,这样散点图更容易做出。
然而:
t = pd.DataFrame({'date': [pd.to_datetime('2012-12-31')]})
t.dtypes # date datetime64[ns], as expected
pure_python_datetime_array = t.date.dt.to_pydatetime() # works fine
t['date'] = pure_python_datetime_array # doesn't do what I hoped
t.dtypes # date datetime64[ns] as before, no luck changing it
Run Code Online (Sandbox Code Playgroud)
我猜大熊猫自动转换纯Pythondatetime所生产to_pydatetime到其原生格式。我想这通常是方便的行为,但有没有办法覆盖它?