2016-12-19 94 views
0

我有有一個「時間戳」列其開始於Python的大熊貓 - 日和月混淆

(2015年1月5日十一時51分00秒)

一個「myfile.csv」文件並且結束在

(2015年7月5日23點22分○○秒)

的9727分鐘

甲總跨度

「myfile.csv」也有一個名爲「A」的列是一些數值值,有值是多個值f或'A',每個分鐘都有一個唯一的時間戳,以精確到秒。

我的代碼如下

df = pd.read_csv('myfile.csv') 
df = df.set_index('timestamp') 
df.index = df.index.to_datetime() 
df.sort_index(inplace=True) 
df = df['A'].resample('1Min').mean() 
df.index = (df.index.map(lambda t: t.strftime('%Y-%m-%d %H:%M'))) 

我的問題是,蟒蛇似乎認爲 '戳' 開始於

(2015年1月5日11:51:00)

- > 1月5日

,並完成在

(2015年7月5日23:22:00)

- > 7月5日

但實際上 '戳' 開始在

5月1日

,並在五月

7日結束

所以上面的代碼產生一個有261,332行的數據框,OMG,當它真的只有9,727行時。

不知何故,Python將月份與日期混淆在一起,錯誤地解釋日期,我該如何解決這個問題?

回答

2

有內csv_read很多爭論,可以幫助您分析從CSV日期直接進入你的熊貓數據幀。在這裏,我們可以將parse_dates設置爲您想要的日期列,然後使用dayfirst。這是默認爲false所以下面應該做你想做的,假設日期在第一列。

df = pd.read_csv('myfile.csv', parse_dates=[0], dayfirst=True) 

如果日期列不是第一排,只是改變0於列編號。

+0

這不會做任何事,我的意思是,輸出中沒有任何變化我仍然得到一個有261,332行的熊貓數據框 –

+0

我正在進行一些編輯和整理。 – josh

+0

你是天才! –

0

您包含在您的問題中的日期格式似乎與您的strftime過濾器不匹配。看看this來修復你的字符串參數。 在我看來,這應該是在的行:

'%d/%m/%Y %H:%M:%S' 
+0

我的確嘗試了你的建議,但我仍然得到了261,332行的熊貓數據框。我的代碼中的strftime過濾器是從索引中刪除'秒',即所有。 –