Невозможно отформатировать столбец даты в датафрейме в datetime и не фильтровать его - PullRequest
0 голосов
/ 30 марта 2020

Я хотел немного поиграть с набором данных о коронирусных вирусах времен Нью-Йорка. Я хочу построить график и отфильтровать по дате, чтобы показать только последние недели. Однако я получаю это сообщение об ошибке: TypeError: '>' not supported between instances of 'bool' and 'datetime.datetime', управляемое этой строкой: df_toplot = df[df['state'].isin(top_states) & df['state'] > da]. Каким-то образом мне не удается преобразовать столбец даты в формат даты и времени, вместо этого он имеет формат pandas .core.series.Series. Как я могу это изменить?

import datetime
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-states.csv")

df['date']= pd.to_datetime(df['date'])
print(type(df['date'])) 
#print(df['date'].iloc[1] > date_object)
variable = "deaths" # "cases"
#print(df.head())

d = pd.pivot_table(df, index= 'state', values= variable,aggfunc=np.sum)
top_states = d.nlargest(10, variable, keep='first').index.values
s = "2018-06-19 11:21:13.311"
da = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S.%f') 
print(type(df['date'])) 
df_toplot = df[df['state'].isin(top_states) & df['state'] > da]
df_toplot.pivot(index='date', columns='state', values=variable).plot()
plt.yscale('log')

1 Ответ

0 голосов
/ 30 марта 2020

Я думаю, вы только что сделали небольшую опечатку. Вы сравниваете дату с колонкой состояний.

# Change this line
df_toplot = df[df['state'].isin(top_states) & df['state'] > da]

# To this (don't forget to separate conditions with parentheses)
df_toplot = df[(df['state'].isin(top_states)) & (df['date'] > da)]

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