Pandas - 日期时间格式毫秒

时间:2015-12-06 23:07:45

标签: python datetime pandas

我有一个以这种格式保存在pandas中的时间字符串列表:

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

你知道我应该使用哪个参数吗?

1 个答案:

答案 0 :(得分: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