【问题标题】:Python: Selecting days in-between with input date by userPython:选择用户输入日期之间的天数
【发布时间】:2021-12-13 18:13:38
【问题描述】:

我正在尝试从 Covid 数据库中获取一些值,并且我编写了以下代码,它可以按我的意愿工作(见下文),但在代码之后我有一个问题要问您:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


def main():

  pd.set_option('display.max_rows', None)          
  df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv')

  df=df[df["Country/Region"]=="Italy"]

  df=df.drop(columns=["Province/State","Lat","Long","Country/Region"])
  df = df.columns.to_frame().T.append(df, ignore_index=True)
  df.columns = range(len(df.columns))
  df=df.T    
  df = df.rename(columns={0: 'date', 1: 'nuovi_casi'})
  df['nuovi_casi'] = df['nuovi_casi'].diff(periods=1).fillna(1)
  df = df[(df['date'] > '11/26/21') & (df['date'] <= '12/8/21')]

  print(df)

  dati_giornalieri=list(df.nuovi_casi)
  sommatoriaitalia=(sum(dati_giornalieri)/1390000000)*100
  
  print(sommatoriaitalia)
  print(dati_giornalieri)

现在我想添加这部分代码来询问用户什么是开始日期和结束日期:

    def main():
      
      start_date=str(input("Enter starting date in format mm/dd/yy"))          
      end_date=str(input("Enter ending date in format mm/dd/yy"))             

      pd.set_option('display.max_rows', None)          
      df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv')

      df=df[df["Country/Region"]=="Italy"]
      df=df.drop(columns=["Province/State","Lat","Long","Country/Region"])
      df = df.columns.to_frame().T.append(df, ignore_index=True)
      df.columns = range(len(df.columns))
      df=df.T    
      df = df.rename(columns={0: 'date', 1: 'nuovi_casi'})
      df['nuovi_casi'] = df['nuovi_casi'].diff(periods=1).fillna(1)
      df = df[(df['date'] > start_date) & (df['date'] <= end_date)]

但在 df = df[(df['date'] > start_date) & (df['date']

start_date = datetime.strptime(input('Enter Start date in the format m/d/y'), '%m/%d/%y')

但我实际上得到了相同的结果,因为仍然存在问题,因为由于某种原因它只考虑每月一天或类似的事情,但无论如何结果并不如预期。

如何解决问题,选择中间的日子?谢谢。

【问题讨论】:

    标签: python dataframe datetime


    【解决方案1】:

    在比较之前将值转换为日期时间:

    start_date = pd.to_datetime(start_date, format="%m/%d/%y")
    end_date = pd.to_datetime(end_date, format="%m/%d/%y")
    df["date"] = pd.to_datetime(df["date"], format="%m/%d/%y")
    
    df = df[df["date"].between(start_date, end_date, inclusive="right")]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多