python - 试图将 Timedelta 更改为 0
问题描述
我有以下带有 timedeltas 的数据框:
0 -1 days +10:53:56
1 1 days 10:13:53
2 0 days 00:28:00
3 0 days 01:21:00
4 0 days 00:19:00
5 -1 days +23:59:59
6 NaT
7 0 days 00:00:50
8 NaT
9 0 days 00:38:00
10 -2 days +20:28:13
我想将所有负值更改为 0。
我可以通过设置过滤掉负数df < pd.Timedelta(0)
,但我无法将其更改为 0 天 00:00:00。我试过了:
for time in df[df < Timedelta(0)]:
df = 0
但这无济于事。任何帮助表示赞赏
解决方案
我试过了:
对于时间在 df[df < Timedelta(0)]: df = 0 但这没有任何作用。
它比您尝试的更简单 - 布尔索引不需要循环:
df[df < pd.Timedelta(0)] = pd.Timedelta(0)
如果数据框中的列多于 Timedelta 列,则当然必须指定列,例如列标签 1:
df.loc[1, df[1] < pd.Timedelta(0)] = pd.Timedelta(0)
推荐阅读
- reactjs - Mapbox 和 CSS Grid - Mapbox 不会在调整窗口大小时自动扩展
- typescript - WebStorm“eslint --fix on save”功能不起作用。但在终端 ESLint 运行良好
- c# - 使用 AzukeKeyVault 密钥签署 JWT
- c++ - 为非标准相机实现 Qt 相机插件
- python - django-background-task 执行完成后如何释放内存资源?
- java - 如何阻止一个微服务消费消息队列中的消息-RabbitMQ
- npm - SyntaxError:尝试将所有 .js 文件的扩展名更改为 .ts 时意外导入令牌
- testing - DBT中的暴露
- r - 使用 tidyverse 更广泛地旋转
- python - 从 pd.read_sql 丢失的数据