熊猫,TypeError:必需为整数(类型为str)

时间:2019-11-22 02:47:00

标签: python pandas

我正在尝试过滤列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)

任何帮助将不胜感激。

2 个答案:

答案 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。

方法1

您可以尝试的是这样:

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')]

方法2

解决此问题的另一种方法是使用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

相关问题