(pd.to_datetime(unprompt_paid.乘客付款时间)-pd.to_datetime(unprompt_paid.用车时间)).dt.days该输出结果未满1天的被识别成了0,如何让时间四舍五入,未满一天的,输出1
时间: 2024-03-12 19:47:03 浏览: 135
你可以使用 `numpy.ceil()` 函数来实现时间四舍五入,未满一天的输出为 1。具体实现代码如下:
```
import pandas as pd
import numpy as np
# 假设 unprompt_paid 是一个 DataFrame,包含乘客付款时间和用车时间两列
days_diff = (pd.to_datetime(unprompt_paid.乘客付款时间) - pd.to_datetime(unprompt_paid.用车时间)).dt.days
days_diff = np.ceil(days_diff.where(days_diff > 0, other=1)).astype(int)
```
上述代码中,我们首先计算出 `pd.to_datetime(unprompt_paid.乘客付款时间) - pd.to_datetime(unprompt_paid.用车时间)` 的天数差,并使用 `numpy.where()` 函数将小于等于 0 的差值设为 1。然后使用 `numpy.ceil()` 函数将天数差值向上取整,最后使用 `astype(int)` 函数将结果转换为整数类型。这样,未满一天的差值就会被四舍五入为 1。
相关问题
(pd.to_datetime(unprompt_paid.乘客付款时间)-pd.to_datetime(unprompt_paid.用车时间)).dt.hour被返回 'TimedeltaProperties' object has no attribute 'hour'
同样的,这个错误也是因为您正在尝试访问一个 Pandas Timedelta 对象的属性时,错误地使用了 `hour` 属性,但实际上 Timedelta 对象没有 `hour` 属性。
您可以通过将 `dt` 属性和 `components` 属性链接在一起来访问时间差分量的小时数。例如:
```
import pandas as pd
time_diff = pd.to_datetime(unprompt_paid.乘客付款时间) - pd.to_datetime(unprompt_paid.用车时间)
hours = (time_diff.dt.components / pd.Timedelta(hours=1)).astype(int)
print(hours)
```
这将输出以整数形式表示的时间差分量的小时数。希望这可以帮助您解决问题!
for i in ['乘客付款时间','用车时间']: paid[i] = paid[i].apply(lambda x: pd.to_datetime(x).strftime("%Y-%m-%d"))中想把数据赋值给i的别名,例如乘客付款时间_ymd
可以使用字典来映射别名,如下所示:
```
alias = {'乘客付款时间': '乘客付款时间_ymd', '用车时间': '用车时间_ymd'}
for i in ['乘客付款时间', '用车时间']:
paid[alias[i]] = paid[i].apply(lambda x: pd.to_datetime(x).strftime("%Y-%m-%d"))
```
这样就可以将原来的列名 `'乘客付款时间'` 和 `'用车时间'` 分别替换成别名 `'乘客付款时间_ymd'` 和 `'用车时间_ymd'`。
阅读全文