首页 > 解决方案 > 试图将 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

但这无济于事。任何帮助表示赞赏

标签: pythonpandastimedelta

解决方案


我试过了:

对于时间在 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)

推荐阅读