【问题标题】:Python - Iterate over dataframe rows to remove time from datetime stamp [duplicate]Python - 遍历数据框行以从日期时间戳中删除时间 [重复]
【发布时间】:2019-11-07 19:41:52
【问题描述】:
我有一个数据框,其中有一列包含日期时间戳(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 Docs
0 2016-06-01 45
1 2016-06-01 56
2 2016-07-01 87
3 2016-07-01 44
我该怎么做呢?
【问题讨论】:
标签:
python
pandas
dataframe
datetime
【解决方案1】:
你需要使用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
【解决方案2】:
使用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 返回日期时间数据类型
dt.date 返回字符串数据类型