使用 Pandas 1.0.0,如何在一行代码中将日期时间数据帧列的时间更改为午夜?
例如:从
START_DATETIME
2017-02-13 09:13:33
2017-03-11 23:11:35
2017-03-12 00:44:32
...
Run Code Online (Sandbox Code Playgroud)
到
START_DATETIME
2017-02-13 00:00:00
2017-03-11 00:00:00
2017-03-12 00:00:00
...
Run Code Online (Sandbox Code Playgroud)
我的尝试:
df['START_DATETIME'] = df['START_DATETIME'].apply(lambda x: pd.Timestamp(x).replace(hour=0, minute=0, second=0))
Run Code Online (Sandbox Code Playgroud)
但这会产生
START_DATETIME
2017-02-13
2017-03-11
2017-03-12
...
Run Code Online (Sandbox Code Playgroud)
您的方法已将日期时间值正确转换为午夜。即,他们的时间是00:00:00。Pandas 只是聪明地不显示时间部分,因为显示00:00:00. 将结果分配回后START_DATETIME,打印单元格将显示
print(df.loc[0, START_DATETIME])
Output:
2017-02-13 00:00:00
Run Code Online (Sandbox Code Playgroud)
此外,要将时间转换为00:00:00,您应该使用dt.normalize或dt.floor
df['START_DATETIME'] = pd.to_datetime(df['START_DATETIME']).dt.normalize()
Run Code Online (Sandbox Code Playgroud)
或者
df['START_DATETIME'] = pd.to_datetime(df['START_DATETIME']).dt.floor('D')
Run Code Online (Sandbox Code Playgroud)
如果你想迫使大熊猫以示00:00:00系列中的输出,你需要转换START_DATETIME到str转换后
pd.to_datetime(df['START_DATETIME']).dt.floor('D').dt.strftime('%Y-%m-%d %H:%M:%S')
Out[513]:
0 2017-02-13 00:00:00
1 2017-03-11 00:00:00
2 2017-03-12 00:00:00
Name: START_DATETIME, dtype: object
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1590 次 |
| 最近记录: |