有没有办法降低熊猫date_range列的精度?

时间:2019-12-12 23:15:28

标签: python pandas datetime

我有一个数据框,其中一列有DateTime列。 我只对直到秒的日期时间值感兴趣。例如

df = pd.DataFrame({'a': np.random.rand(5), 
             'b': pd.date_range(start=datetime.now(), periods=5, freq='999ms')})

    a                      b
0   0.884220    2019-12-12 23:08:54.275763
1   0.904123    2019-12-12 23:08:54.775763
2   0.314661    2019-12-12 23:08:55.275763
3   0.282793    2019-12-12 23:08:55.775763
4   0.112378    2019-12-12 23:08:56.275763

我想创建另一个数据框,其时间精度仅到几秒钟

    a   b
0   0.884220    2019-12-12 23:08:54
1   0.904123    2019-12-12 23:08:54
2   0.314661    2019-12-12 23:08:55
3   0.282793    2019-12-12 23:08:55
4   0.112378    2019-12-12 23:08:56

您能建议如何实现吗?

谢谢

2 个答案:

答案 0 :(得分:2)

使用round方法。

new_df = df.copy()
new_df['b'] = new_df['b'].dt.round("1s")

如果在索引中:

df.index.round("1s")

如果要更改数据框架:

df.index = df.index.round("1s")

其他:

new_df = df.copy()
new_df.index = new_df.index.round("1s")

请注意,根据预期的行为,ceilfloor也可用。

答案 1 :(得分:0)

您可以在列dt.strftime上使用b来获取所需的格式

df['b']=pd.to_datetime(df.b.dt.strftime('%Y-%m-%d %H:%M:%S'))

您仅使用df['b']=df.b.dt.strftime('%Y-%m-%d %H:%M:%S'),但列的类型为object,而不是datetime64[ns]