2015-12-06 91 views
1

我在這個格式保存大熊貓時間字符串列表的日期時間格式:熊貓 - 毫秒

2743 2015-11-30-20-24-0-970 
2744 2015-11-30-20-24-0-989 
2745  2015-11-30-20-24-1-7 
2746  2015-11-30-20-24-1-28 

我需要將其轉換爲日期時間格式,但是當我做這樣的:

pd.to_datetime(something['Date'],format="%Y-%m-%d-%H-%M-%S-%f") 

我以這種形式獲得的數據:

2743 2015-11-30 20:24:00.970 
2744 2015-11-30 20:24:00.989 
2745 2015-11-30 20:24:01.700 
2746 2015-11-30 20:24:01.280 

但最後兩個有錯誤的時間格式。它應該是這樣的:

2745 2015-11-30 20:24:01.007 
2746 2015-11-30 20:24:01.028 

你知道我應該使用哪個參數嗎?

回答

0

使用矢量化的最後一個元素與零墊上str.zfill,你可以得到正確的結果:

In [52]: 
import io 
import pandas as pd 
t="""2743 2015-11-30-20-24-0-970 
2744 2015-11-30-20-24-0-989 
2745  2015-11-30-20-24-1-7 
2746  2015-11-30-20-24-1-28""" 
df = pd.read_csv(io.StringIO(t), header=None, delim_whitespace=True, names=['id', 'date']) 
df 

Out[52]: 
    id     date 
0 2743 2015-11-30-20-24-0-970 
1 2744 2015-11-30-20-24-0-989 
2 2745 2015-11-30-20-24-1-7 
3 2746 2015-11-30-20-24-1-28 

In [53]: 
df['date'] = df['date'].str.rsplit('-',n=1).str[0] + '-' + df['date'].str.rsplit('-',n=1).str[-1].str.zfill(3) 
df 

Out[53]: 
    id     date 
0 2743 2015-11-30-20-24-0-970 
1 2744 2015-11-30-20-24-0-989 
2 2745 2015-11-30-20-24-1-007 
3 2746 2015-11-30-20-24-1-028 

In [54]:  
pd.to_datetime(df['date'],format="%Y-%m-%d-%H-%M-%S-%f") 

Out[54]: 
0 2015-11-30 20:24:00.970 
1 2015-11-30 20:24:00.989 
2 2015-11-30 20:24:01.007 
3 2015-11-30 20:24:01.028 
Name: date, dtype: datetime64[ns] 

所以,關鍵是這一行:

df['date'].str.rsplit('-',n=1).str[0] + '-' + df['date'].str.rsplit('-',n=1).str[-1].str.zfill(3) 

這就要求rsplit和取最後一個元素,然後調用zfill,然後我們將其與字符串的其餘部分一起返回以獲得我們想要的內容。

In [57]: 
df['date'].str.rsplit('-',n=1).str[-1].str.zfill(3) 

Out[57]: 
0 970 
1 989 
2 007 
3 028 
dtype: object 

In [58]: 
df['date'].str.rsplit('-',n=1).str[0] + '-' + df['date'].str.rsplit('-',n=1).str[-1].str.zfill(3) 

Out[58]: 
0 2015-11-30-20-24-0-970 
1 2015-11-30-20-24-0-989 
2 2015-11-30-20-24-1-007 
3 2015-11-30-20-24-1-028 
dtype: object 
+0

我從Android傳感器獲取了這些數據。你有沒有可能讓他們成爲007格式而不僅僅是7? –

+0

我不知道說實話,這是你需要檢查sdk – EdChum

+0

好的,但謝謝你的幫助! –