此问题已经在这里有了答案:
我有一个数据框,其中的一列包含一个日期时间戳记(dtype:datetime64 [ns]):
Date Docs
0 2016-06-01 04:48:23 45
1 2016-06-01 07:24:38 56
2 2016-07-01 08:27:26 87
3 2016-07-01 08:27:49 44
我想遍历每一行以删除Date的时间部分,以得到这样的最终结果:
Date Docs
0 2016-06-01 45
1 2016-06-01 56
2 2016-07-01 87
3 2016-07-01 44
我将如何去做?
使用dt.floor
:
df['Date'].dt.floor('D')
或
df['Date'].dt.normalize()
0 2016-06-01
1 2016-06-01
2 2016-07-01
3 2016-07-01
Name: Date, dtype: datetime64[ns]
注意:dt.floor
返回日期时间dtype[dt.date
返回字符串dtype的位置
您需要使用dt.date
:
df['Date'] = df['Date'].dt.date
示例:
import pandas as pd
import numpy as np
rng = pd.date_range('2019-01-01 01:01:00', periods=365, freq='D')
df = pd.DataFrame(rng)
print(df[0])
看起来像:
0 2019-01-01 01:01:00
1 2019-01-02 01:01:00
2 2019-01-03 01:01:00
应用dt.date
之后:
df[0] = df[0].dt.date
print(df[0])
看起来像:
0 2019-01-01
1 2019-01-02
2 2019-01-03