Как фильтровать по дате DataFrame в функции python - PullRequest
0 голосов
/ 18 июня 2020

Я пробовал следующий код.

Результат1 фильтруется по заданной дате, но результат2 не фильтруется. Как я могу фильтровать по дате в функции?

import pandas as pd
over20='https://gist.githubusercontent.com/shinokada/dfcdc538dedf136d4a58b9bcdcfc8f18/raw/d1db4261b76af67dd67c00a400e373c175eab428/LNS14000024.csv'

df_over20 = pd.read_csv(over20)
display(df_over20)

result1=df_over20[df_over20['DATE']>='1972-01-01']
display(result1)


def changedate(item):
    # something more here
    item['DATE']=pd.to_datetime(item['DATE'])
    start=pd.to_datetime('1972-01-01')
    item[item['DATE']>=start]
    return item

result2=changedate(df_over20)
display(result2)

enter image description here

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Вы не должны сравнивать datetime по собственной строке. это приводит к плохому результату. пожалуйста, используйте это.

import datetime
 def compare (date1,date2):
   date1 = datetime.datetime.fromisoformat(date1).timestamp()
   date2 = datetime.datetime.fromisoformat(date2).timestamp()
   if(date1>date2):
     return 1
   elif(date1 == date2):
     return 0
   else:
     return -1
0 голосов
/ 18 июня 2020

По моему опыту, я бы сделал столбец Date индексом, выполнив:

df.index = df[“DATE”]
df.drop(“DATE” , inplace = True , axis = 1 )

Попробуйте использовать столбец индекса

date = DT.datetime(‘2020-04-01’)
x = df[df.index > date]

Вы также можете использовать следующую команду, чтобы сделать убедитесь, что ваш индекс является индексом datetime

df.index = pd.to_datetime( df.index )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...