這裏是我的問題簡而言之:我試圖寫我的數據(包含,其中,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