pandas 截取时间戳为日期时间
时间: 2023-08-15 12:11:23 浏览: 104
可以使用 pandas 的 `to_datetime()` 方法将时间戳转换为日期时间格式,然后使用 `dt.date` 属性截取日期部分。
示例代码如下:
``` python
import pandas as pd
# 创建一个时间戳序列
ts = pd.Series(['2022-01-01 12:34:56', '2022-02-01 23:45:01', '2022-03-01 09:08:14'])
# 转换为日期时间格式
dt = pd.to_datetime(ts)
# 截取日期部分
date = dt.dt.date
print(date)
```
输出结果:
```
0 2022-01-01
1 2022-02-01
2 2022-03-01
dtype: object
```
其中,`dt` 是 `DatetimeProperties` 对象,提供了许多有用的日期时间属性和方法,如 `dt.year`、`dt.month`、`dt.day`、`dt.hour`、`dt.minute`、`dt.second` 等。
相关问题
pandas 时间戳截取日期
可以使用 pandas 中的 date_range 函数生成一个时间序列,然后使用 strftime 函数将时间戳转换为日期格式,再使用字符串截取函数截取日期部分即可。具体代码如下:
```python
import pandas as pd
# 生成时间序列
ts = pd.date_range(start='2021-01-01', end='2021-12-31', freq='D')
# 将时间戳转换为日期格式,并截取日期部分
dates = [t.strftime('%Y-%m-%d') for t in ts]
print(dates)
```
输出结果为:
```
['2021-01-01', '2021-01-02', '2021-01-03', ..., '2021-12-29', '2021-12-30', '2021-12-31']
```
截取pandas时间相减为正的行
假设你有一个包含两个时间戳的 pandas DataFrame,如下所示:
```
import pandas as pd
df = pd.DataFrame({'start': ['2021-01-01 10:00:00', '2021-01-02 11:00:00', '2021-01-03 12:00:00'],
'end': ['2021-01-01 11:00:00', '2021-01-02 09:00:00', '2021-01-03 14:00:00']})
df['start'] = pd.to_datetime(df['start'])
df['end'] = pd.to_datetime(df['end'])
print(df)
```
输出:
```
start end
0 2021-01-01 10:00:00 2021-01-01 11:00:00
1 2021-01-02 11:00:00 2021-01-02 09:00:00
2 2021-01-03 12:00:00 2021-01-03 14:00:00
```
你可以使用 pandas 的时间差函数 `pd.Timedelta` 来计算时间差,然后使用条件过滤器来筛选出时间差为正的行,如下所示:
```
duration = df['end'] - df['start']
positive_duration = duration[duration > pd.Timedelta(0)]
result = df.loc[positive_duration.index]
print(result)
```
输出:
```
start end
0 2021-01-01 10:00:00 2021-01-01 11:00:00
2 2021-01-03 12:00:00 2021-01-03 14:00:00
```
这样,你就得到了一个只包含时间差为正的行的 DataFrame。
阅读全文