Как добавить значения из одного столбца в столбец метки времени в виде дней?

#python #python-3.x #dataframe #filter #timestamp

Вопрос:

У меня есть таблица df:

 date                     day       
2021-07-25                1 
2021-07-29                1 
2021-07-30                1 
 

Я хочу отфильтровать его таким образом:

 df[df['device_install_date']   df['lifetime'] < '2021-07-27']
 

Но это приводит к ошибке:

 TypeError: can only concatenate str (not "int") to str
 

Как я могу это сделать? значения в столбце «день» должны добавляться как дни до даты. Column day has type pandas.core.series.Series

Ответ №1:

Для этого вы должны убедиться, что используете правильные типы данных. В вашем примере я предполагаю, что столбец даты-это дата-время, поэтому для увеличения столбца даты по дням вам нужно использовать дельту времени, а затем сравнить дату с такой датой.

 df = pd.DataFrame([
    {'date':'2021-07-25','days':1},
    {'date':'2021-07-29','days':1},
    {'date':'2021-07-30','days':1}
])

df['date'] = pd.to_datetime(df['date'])
df['days'] = pd.to_timedelta(df['days'],unit='D')
query = df[(df['date'] df['days']).dt.date<pd.to_datetime('2021-07-27').date()]
print(query)