Python 类型错误:';功能';当我没有调用任何函数进行迭代时,对象是不可iterable的

Python 类型错误:';功能';当我没有调用任何函数进行迭代时,对象是不可iterable的,python,python-3.x,pandas,Python,Python 3.x,Pandas,当我调用返回iterables的函数时,我多次看到这个错误,但这次我被卡住了。据我所知,我在这里正确地遵循了sytax。有人能发现我遗漏了什么吗 到目前为止我所做的: 已验证相关列的格式是否正确且没有NAN 在外部工具中验证正则表达式 重写了声明 下面是我用来生成regex和过滤器my dataframe的代码: import pandas as pd from datetime import datetime, timedelta data = ['2019-01-01'] only_o

当我调用返回iterables的函数时,我多次看到这个错误,但这次我被卡住了。据我所知,我在这里正确地遵循了sytax。有人能发现我遗漏了什么吗

到目前为止我所做的:

  • 已验证相关列的格式是否正确且没有NAN

  • 在外部工具中验证正则表达式

  • 重写了声明

下面是我用来生成regex和过滤器my dataframe的代码:

import pandas as pd
from datetime import datetime, timedelta

data = ['2019-01-01']
only_onboarding = pd.DataFrame(data, columns = ['ClosedDate'])

cycle_times = pd.DataFrame;
today = datetime.today();
for i in range(today.month - 1):  # Regex Model: 2019-08-\d\d$
    regx = "";

    if (i + 1 < 10):
        regx = str(today.year) + '-0' + str(i + 1) + '-\d\d$';
    else:
        regx = str(today.year) + '-' + str(i + 1) + '-\d\d$';

of_month = only_onboarding['ClosedDate'].filter(lambda x: re.match(regx, x));
将熊猫作为pd导入
从datetime导入datetime,timedelta
数据=['2019-01-01']
仅_onboarding=pd.DataFrame(数据,列=['ClosedDate'])
循环次数=pd.DataFrame;
今天=日期时间。今天();
对于范围内的i(今天。月份-1):#正则表达式模型:2019-08-\d\d$
regx=“”;
如果(i+1<10):
regx=str(今日.year)+'-0'+str(i+1)+'-\d\d$';
其他:
regx=str(今日.year)+'-'+str(i+1)+'-\d\d$';
of_month=仅_onboard['ClosedDate'].过滤器(lambda x:re.match(regx,x));

如果您试图进行筛选,以便只保留与某些正则表达式匹配的元素,请使用:

only_onboarding[only_onboarding['ClosedDate'].str.match(regx)]
首先,
DataFrame#filter
需要(1)
items
列出要保留的索引,(2)一个类似于的函数,它允许您计算要保留的项目,以及(3)一个
regex
参数,如果匹配,它将保留行。您收到一个类型错误,因为函数需要项


其次,
DataFrame#filter
Series#filter
对索引中的标签进行操作,而不是对其中包含的值进行操作。

如果您试图进行过滤,以便只保留与某些正则表达式匹配的元素,请使用:

only_onboarding[only_onboarding['ClosedDate'].str.match(regx)]
首先,
DataFrame#filter
需要(1)
items
列出要保留的索引,(2)一个类似于的函数,它允许您计算要保留的项目,以及(3)一个
regex
参数,如果匹配,它将保留行。您收到一个类型错误,因为函数需要项


其次,
DataFrame#filter
Series#filter
对索引中的标签进行操作,而不是对其中包含的值进行操作。

查看熊猫数据框。filter文档:


您将lambda传递给filter方法,就像python内置函数一样,但这不是panda的filter函数所期望的。它的第一个位置参数应该是一个列表,它是“function”对象不可编辑错误的来源。

请查看pandas dataframe.filter文档:


您将lambda传递给filter方法,就像python内置函数一样,但这不是panda的filter函数所期望的。它的第一个位置参数应该是一个列表,它是“function”对象不可编辑错误的来源。

@ALollz,将axis=1添加到筛选器调用会产生更多错误errors@Trenton_M这已经相当瘦身了。数据框是不相关的,它只是一列,日期为'2019 mm dd'。我已经验证了正则表达式是否可以使用外部工具。我们并没有要求您缩小它的尺寸。我们要求的是我们可以运行的东西,它在运行时会复制错误。考虑到这些约束,它应该尽可能短,但可运行性很重要。@user2357112请参阅更新。应该告诉您错误。@Trenton\u M请参阅更新,我的bad@ALollz,将,axis=1添加到筛选器调用会生成更多errors@Trenton_M这已经相当瘦身了。数据框是不相关的,它只是一列,日期为'2019 mm dd'。我已经验证了正则表达式是否可以使用外部工具。我们并没有要求您缩小它的尺寸。我们要求的是我们可以运行的东西,它在运行时会复制错误。考虑到这些约束,它应该尽可能短,但可运行性很重要。@user2357112请参阅更新。应该告诉您错误。@Trenton\u M请参阅更新,我的badSo数据帧过滤器是否总是返回序列?现在我得到的是一个空的,因为错误已经解决了(不应该是这种情况,它应该只在onboarding中包含一个元素。我用来测试正则表达式的所有工具都表明它应该工作。(1)您正在通过使用
onboarding['ClosedDate'来子集到series)
,然后调用
Series#filter
,返回序列。(2)我在阅读上面的文档时犯了一个错误,并相应地更新了答案:
DataFrame#filter
Series#filter
都只适用于索引中的标签。如果要根据某列中的内容匹配进行筛选,请使用子集语法。那么DataFrame#filter是否总是返回一个系列?我得到了一个empty one现在错误已经解决(不应该是这种情况,它应该只包含onboarding中的一个元素。我用来测试正则表达式的所有工具都表明它应该可以工作。(1)您通过使用
onboarding['ClosedDate']
来子集到series,然后调用
series#filter
,返回序列。(2) 我在阅读上面的文档时犯了一个错误,并相应地更新了答案:
DataFrame#filter
Series#filter
仅适用于索引中的标签。如果要根据特定列中的内容匹配进行筛选,请使用子集语法。