如何删除负数天的行

时间:2019-01-19 16:34:33

标签: python pandas datetime

我有一个看起来像这样的数据框,里面有多行:

id       type       date_1       date_2       time_delta
1         a      2019-01-19     2019-01-10    9 days
1         b      2018-01-10     2019-01-10    -365 days

time_delta列等于从date_2中减去date_1,列date_1date_2的格式为pandas.datetime。

我想删除time_delta列中所有带有负值的行。

我尝试将行强制转换为整数,然后删除这样的行:

df['time_delta'] = int(df['time_delta'])
df = dx_reg.ix[df['time_delta'] < 0]

但是我得到这个错误: `df ['time_delta'] = int(df ['time_delta'])     df = df.ix [df ['time_delta'] <0]

但是我得到这个错误: TypeError: cannot convert the series to class 'int'

1 个答案:

答案 0 :(得分:1)

0转换为timedelta

df = df[df['time_delta'] > pd.Timedelta(0)]

或通过Series.dt.days将列转换为天数:

df = df[df['time_delta'].dt.days > 0]

print (df)
   id type      date_1      date_2 time_delta
0   1    a  2019-01-19  2019-01-10     9 days