使用矢量化的最後一個元素與零墊上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
我從Android傳感器獲取了這些數據。你有沒有可能讓他們成爲007格式而不僅僅是7? –
我不知道說實話,這是你需要檢查sdk – EdChum
好的,但謝謝你的幫助! –