这里是我的问题简而言之:我试图写我的数据(包含,其中,np.datetime64值)到csv,然后读取它们回来,并且希望我的时间不要改变......熊猫to_csv然后read_csv结果为numpy.datetime64搞砸了由于utc
正如在很多地方讨论的那样,np.datetime64在mem中保存二进制和UTC的所有内容,但是会从本地时间读取字符串。
这里是我的问题,从 df.to_csv( “富”)保存,这里pd.read_csv( “富”)上改变时代的结果一个简单的例子:
In[184]: num = np.datetime64(datetime.datetime.now())
In[185]: num
Out[181]: numpy.datetime64('2015-10-28T19:19:42.408000+0100')
In[186]: df = pd.DataFrame({"Time":[num]})
In[187]: df
Out[183]:
Time
0 2015-10-28 18:19:42.408000
In[188]: df.to_csv("foo")
In[189]: df2=pd.read_csv("foo")
In[190]: df2
Out[186]:
Unnamed: 0 Time
0 0 2015-10-28 18:19:42.408000
In[191]: np.datetime64(df2.Time[0])
Out[187]: numpy.datetime64('2015-10-28T18:19:42.408000+0100')
In[192]: num == np.datetime64(df2.Time[0])
Out[188]: False
(像往常一样: )
import numpy as np
improt pandas as pd
有一个非常大的数量的问题,很多在网络上的信息,但现在我已经在Google上搜寻了一段时间,一直没能找到关于如何克服这个答案。应该有一些方法来保存祖鲁语中的数据, 或读取他们假设的UTC,但还没有找到任何方向是最好的(或甚至好?)的方式来做到这一点。 我可以做
In[193]: num == np.datetime64(df2.Time[0]+"Z")
Out[189]: True
但(使用默认的保存和读取混乱事情的时候加上其烦人)
我得到了numpy正在做的事情,这与您所描述的完全相同。我的问题是pandas parse_dates = ['Time']与numpy.datetime64构造函数的作用不同,例如: – ntg
In [46]:pd.read_csv(StringIO(df.to_csv(index = False)),parse_dates = ['Time'])。Time [0] == np.datetime64(pd.read_csv(StringIO(df.to_csv(index = False)))。Time [0]) Out [46]:False – ntg
因此,as你写,答案是使用parse_dates = ['Time'])。没有它,通过numpy构造函数产生的字符串可能会导致问题。 – ntg