Возврат строк между датами работает только с перерывами - PullRequest
0 голосов
/ 16 июня 2020

У меня есть код, который нацелен на извлечение количества элементов в отдельные дни из каждого города, а затем возвращение процента от общего количества городов; все из одного df. Проблема в том, что несмотря на то, что он определенно присутствует в df, и общая длина каждого города правильная; некоторые даты возвращают 0 для длины (печатаются как <1>). Кажется, это одни и те же даты для каждого города, которые возвращают 0 для длины. Обратите внимание, что я напечатал фактические даты (<2>), между которыми выполнялся поиск, и они верны ..bizarre!

Я почти уверен, что проблема в строке <3> (только ниже <2>).

Любая помощь будет принята с благодарностью.

def getdays(df,cities):
    df['tweet_date'] = pd.to_datetime(df['tweet_date']) 
    start_dates = get_dates2('28-05-2020','13-06-2020')
    end_dates = get_dates2('29-05-2020','14-06-2020')
    y_values = {}
    aa = []
    for city in cities:
        citydf = df[df['city']==city]
        citysum = len(citydf)
        print(city,citysum)
        for start_date,end_date in zip(start_dates,end_dates):
            print(start_date,end_date) <2>
            day = df.loc[(df['city']==city) & (df['tweet_date'] > start_date) & df['tweet_date'] <= end_date)] <3>
            try:
                print(len(day)) <1>
                dayperc = round((len(day)/citysum)*100,)
            except ZeroDivisionError:
                print([city,start_date,end_date])
                pass
            aa.append(dayperc)
        y_values[city] = aa
    return y_values

print(getdays(alltweets,cities))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...