首页 > 解决方案 > 仅添加到数据框列中的负天数

问题描述

我有一个数据框,在其中我获得了两个不同时间之间的差异列(以下示例):

    difference 
    00:30:15 
    00:15:00
    -1 days +02:27:00
    -1 days +00:41:00

这些值被标记为 timedelta 类型。那么我怎样才能只为那些负值添加一天(将差异变为正值)?我试图这样做:

mask=df[df["difference"]<"0"]
df[mask,"difference"]=df["difference"] + pd.Timedelta(days=1)

(引号为零,否则不接受,不知道为什么)

输出:

TypeError: 'DataFrame' 对象是可变的,因此它们不能被散列

然后我尝试:

df.loc[df["difference"]<0, "difference"]=df["difference"] + pd.Timedelta(days=1)

输出:

TypeError:dtype=timedelta64[ns] 和 int 之间的比较无效

所以,我不知道还能做什么。我在这里回顾了很多问题,但到目前为止没有一个对我有帮助。欢迎任何想法。

标签: pythonpandastimedifference

解决方案


尝试这个:

df.loc[df['difference'] < '0', 'difference'] = df["difference"] + pd.Timedelta(days=1)

推荐阅读