我正在尝试过滤列New_Date。
0 2019-11-20
1 2019-11-18
2 2019-11-16
3 2019-11-13
4 2019-11-11
5 2019-11-10
6 2019-11-08
7 2019-11-06
8 2019-11-02
9 2019-11-01
10 2019-10-30
11 2019-10-28
12 2019-10-26
13 2019-10-01
14 NaT
15 NaT
16 2019-10-18
17 2019-10-13
18 2019-10-10
19 2019-10-08
20 NaT
21 NaT
filterdate = datetime.date(input())
d1 = d1[(d1['New_Date'] > '{filterdate}') & (d1['New_Date'] != 'NaT')]
我以“ 2019-11-11”格式输入日期
我得到这个TypeError: an integer is required (got type str)
任何帮助将不胜感激。
答案 0 :(得分:1)
如果我正确理解了这一点,则可以尝试:
filterdate = input("Input Date in format ((Year-Month-Day): ")
d1[(d1['Date'] > filterdate) & (d1['Date'] != 'NaT')]
输入不带引号的“ 2019-11-11”(使用您其他帖子中的数据)
Input Date in format Year-Month-Day: 2019-11-10
#Out[2203]:
# Date OPP Result
#0 2019-11-16 @DAL L110-102
#1 2019-11-13 @POR W114-106
#2 2019-11-11 @LAC L98-88
答案 1 :(得分:1)
您的代码存在以下问题:
filterdate = datetime.date(input())
datetime.date()函数实际上无法正确解析日期,并为您提供此TypeError。
您可以尝试的是这样:
date = str(input())
year, month, day = map(int, date.split('-'))
filterdate = datetime.date(year, month, day)
然后您可以像这样进行比较:
d1 = d1[(d1['New_Date'] > filterdate) & (d1['New_Date'] != 'NaT')]
解决此问题的另一种方法是使用datetime.date.fromisoformat()函数。
filterdate = datetime.date.fromisoformat(input())
然后
d1 = d1[(d1['New_Date'] > filterdate) & (d1['New_Date'] != 'NaT')]
有关日期时间的更多详细信息,可以在这里找到:https://docs.python.org/3/library/datetime.html