我有一个看起来像这样的数据框,里面有多行:
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_1
和date_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'
答案 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