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



我有一个数据帧,其中一列有日期时间列。 我只对秒之前的日期时间值感兴趣。所以例如

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

你能建议如何实现这一目标吗?

谢谢

使用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

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

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]

最新更新