Python 仅添加到dataframe列中的负天数

Python 仅添加到dataframe列中的负天数,python,pandas,time,difference,Python,Pandas,Time,Difference,我有一个数据框,其中我获得了两个不同小时之间的差异列(下面是一个示例): 这些值被标记为timedelta类型。那么,我怎样才能只为那些负值加上一天(使差值变为正值)?我曾尝试: mask=df[df["difference"]<"0"] df[mask,"difference"]=df["difference"] + pd.Timedelta(days=1) mask=df[df[“difference”]

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

这些值被标记为timedelta类型。那么,我怎样才能只为那些负值加上一天(使差值变为正值)?我曾尝试:

mask=df[df["difference"]<"0"]
df[mask,"difference"]=df["difference"] + pd.Timedelta(days=1)
mask=df[df[“difference”]试试这个:

df.loc[df['difference'] < '0', 'difference'] = df["difference"] + pd.Timedelta(days=1)
df.loc[df['difference']<'0','difference']=df[“difference”]+pd.Timedelta(天数=1)
试试这个:

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

您就快到了。
掩码应该是布尔数组,而不是数据帧:

mask=df["difference"]<"0" # << Note the change
df.loc[mask,"difference"]=df["difference"] + pd.Timedelta(days=1)
print(df)

您就快到了。
mask
应该是布尔数组,而不是数据帧:

mask=df["difference"]<"0" # << Note the change
df.loc[mask,"difference"]=df["difference"] + pd.Timedelta(days=1)
print(df)

您可以使用dtype来确定列中的值的类型吗?如果它们不是日期类型,您将在比较时遇到问题。

您可以使用dtype来确定列中的值的类型吗?如果它们不是日期类型,您将在比较时遇到问题。

您的第二次尝试几乎成功了…但是,正如解释的那样在异常中,您不能比较
pd.Timedelta
,在这种情况下,
0
是整数

你可以用它来修理

df.loc[df["difference"] < pd.Timedelta(0), "difference"]=df["difference"] + pd.Timedelta(days=1)
df.loc[df[“差”]
您的第二次尝试几乎成功了……但是,正如在例外情况中所解释的,您无法比较
pd.Timedelta
,在这种情况下,
0
是整数

你可以用它来修理

df.loc[df["difference"] < pd.Timedelta(0), "difference"]=df["difference"] + pd.Timedelta(days=1)
df.loc[df[“差”]
是的。在操作后,我仍在努力处理不同类型的值。每当出现警告时,有时我会因此而看不到错误。非常感谢,它立即解决了!是的。在操作后,我仍在努力处理不同类型的值。每当出现警告时,有时我看不到错误,因为非常感谢,问题马上就解决了!注意,克里斯和安迪的答案也很有效,通常有多种方法来完成一项工作,有些在某些情况下效果更好,但知道选项很好。注意,克里斯和安迪的答案也很有效,通常有多种方法来完成一项工作,有些在某些情况下效果更好,b这两个选项都很聪明,它们都很有效,谢谢。这两个选项都很聪明,它们都有效,谢谢。问题已经解决了,谢谢。但我做到了,它们是datetime64。所以没有问题。问题已经解决了,谢谢,但我做到了,t嘿,我们是datetime64,所以没有问题。