У меня есть код, который нацелен на извлечение количества элементов в отдельные дни из каждого города, а затем возвращение процента от общего количества городов; все из одного 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))