我有一个数据帧,其中一列有日期时间列。 我只对秒之前的日期时间值感兴趣。所以例如
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")
作为旁注,根据预期的行为,还可以使用ceil
和floor
。
您可以在第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]