2017-03-17 23 views
1

我有一些需要分析的csv文件。在csvs中有一個時間日期字段。以下是原始欄的格式;解析熊貓數據時間的問題

2017/02/17-12:56 
2017/02/17-12:58 
2017/02/17-1:00 
2017/02/17-1:02 
2017/02/17-1:04 
2017/02/17-1:06 

正如你可以看到它的12小時制。我不知道,如果「 - 」是導致我在解析時的問題,所以我已經厭倦了脫光了這一點但是由於某種原因,它不會剝離它,這裏是我已經厭倦了:

df['TimeDate'] = df['TimeDate'].map(lambda x: x.rstrip('-')) # doesnt strip 

df['TimeDate'] = pd.to_datetime(df['TimeDate'], format ='%Y/%m/%d-%I:%M') 
#error: time data 'TimeDate' does not match format '%Y/%m/%d-%I:%M' 

df.TimeDate = pd.to_datetime(df.TimeDate.str.strip('-'), format='%Y/%m/%d-%I:%M') 
#error: time data 'TimeDate' does not match format '%Y/%m/%d-%I:%M' 

df['TimeDate'] = df['TimeDate'].astype('datetime64[ns]') 
#error: Error parsing datetime string "2017/03/14-11:32" at position 4 

我不知道還有什麼要做。任何幫助深表感謝。 謝謝

+0

你可以檢查CSV數據類型? –

+0

@Data_Kid它似乎是通用 – ukbaz

+0

請編輯您的問題與原始數據,代碼重新創建您的df,任何錯誤和您的熊貓,python和numpy版本 – EdChum

回答

2

如果你想使用拉姆達

import pandas 
l = """2017/02/17-12:56 
2017/02/17-12:58 
2017/02/17-1:00 
2017/02/17-1:02 
2017/02/17-1:04 
2017/02/17-1:06""" 



p = pandas.DataFrame(l.split('\n')) 

p = p.apply(lambda x: pandas.to_datetime(x)) 

>>p[0] 
0 2017-02-17 12:56:00 
1 2017-02-17 12:58:00 
2 2017-02-17 01:00:00 
3 2017-02-17 01:02:00 
4 2017-02-17 01:04:00 
5 2017-02-17 01:06:00 
Name: 0, dtype: datetime64[ns] 

編輯 - 字符串格式不工作,所以試試這個

import pandas 

l = """2017/02/17-12:56 
2017/02/17-12:58 
2017/02/17-1:00 
2017/02/17-1:02 
2017/02/17-1:04 
2017/02/17-1:06""" 
p = pandas.Series(l.split('\n')) 
df = p.to_frame('DateTime') 

df['Date'] = df['DateTime'].str.split('-').str.get(0) 
df['time'] = df['DateTime'].str.split('-').str.get(1) 
df['TimeDate'] = pandas.to_datetime(df['Date'] + ' ' + df['time']) 

df 
+0

感謝您的回覆,我得到以下錯誤: '未知的字符串格式','發生在索引TimeDate' – ukbaz

+0

你有哪個版本的熊貓? – jwillis0720

+0

我有版本0.18.1 – ukbaz