【问题标题】:how to slice dates from a dataframe using standard input function?如何使用标准输入函数从数据框中切片日期?
【发布时间】:2018-08-16 11:25:26
【问题描述】:

我在Indexing and selecting data 中看到了文档,其中涉及硬核脚本方法从数据帧中分割一系列数据。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('d1.csv')

df['time']=pd.to_datetime(df['time'], unit='ns')

df = df.drop('name', 1)

df['Time'] = df['time'].dt.time

df['date'] = df['time'].dt.date
df['date'] = pd.to_datetime(df['date'])

df = df.set_index(['date'])

df= df.loc['2018-07-04':'2018-07-05']

但是我需要从标准输入函数中选择一个数据范围,怎么做:

而不是在控制台的表格中使用df= df.loc['2018-07-04':'2018-07-05']say,它将被要求Enter the start date :Enter the stop date :,这样我将只获得所选日期范围的数据。

我实际上是这样尝试的:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('d1.csv')

df['time']=pd.to_datetime(df['time'], unit='ns')

df = df.drop('name', 1)

df['Time'] = df['time'].dt.time

df['date'] = df['time'].dt.date
df['date'] = pd.to_datetime(df['date'])

df = df.set_index(['date'])
Starting_Date = input(" Please Enter the Starting_Date : ")
Ending_Date = input(" Please Enter the Ending_Date : ")

data = df[Starting_Date:Ending_Date]

但这不起作用……请看一下。

【问题讨论】:

  • @Dawid_Sielski 我已经更新了我的问题,请看一下:)
  • @roganjosh 我已经更新了我工作的代码,现在问题已经完全完成,感谢您的帮助。

标签: python pandas stdin


【解决方案1】:

请试试这个。日期格式为year-month-day,例如“2018-08-16”。

from datetime import datetime

a = input('Starting_Date: ')
b = input('Ending_Date :')

starting_date = datetime.strptime(a, "%Y-%m-%d").date()
ending_date = datetime.strptime(b, "%Y-%m-%d").date()

df.loc[starting_date:ending_date]

希望对你有用:)

【讨论】:

  • 它给出了一个TypeError: strptime() argument 1 must be string, not int
  • 这很奇怪。请在此链接中在线尝试我的代码:repl.it/@dawidsielski/dateslice 并说明它是否产生任何错误。
  • 它在线工作。但不是在我的系统空闲...是因为我使用的是 Python 2.7 吗? @Dawid_Sielski
  • 我使用的是 python 3.6.2,这可能是问题所在,但要确保我必须阅读 python 2.7 下此函数的文档。
  • 请分享文档链接。
猜你喜欢
  • 1970-01-01
  • 2019-04-03
  • 2021-06-04
  • 2021-05-27
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
相关资源
最近更新 更多