我有一个数据框,其中一列有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
您能建议如何实现吗?
谢谢
答案 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")
请注意,根据预期的行为,ceil
和floor
也可用。
答案 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]