TypeError:*之后的类型对象参数必须是iterable,而不是itertools.map

2024-04-26 22:42:54 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图合并Name列左侧的两个数据帧时,出现标题错误。这是数据帧.info()调用两个数据帧。在

Int64Index: 145 entries, 1 to 162 
Data columns (total 13 columns):
Quarter     145 non-null float64
Time        145 non-null object
Down        145 non-null float64
ToGo        145 non-null float64
Location    145 non-null object
Detail      145 non-null object
SEA         145 non-null float64
TAM         145 non-null float64
EPB         145 non-null float64
EPA         145 non-null float64
Win%        145 non-null float64
Name        145 non-null object
Yards       145 non-null int64
dtypes: float64(8), int64(1), object(4)
memory usage: 15.9+ KB
None

Int64Index: 1567 entries, 0 to 1566
Data columns (total 4 columns):
Name        1567 non-null object
Team        1567 non-null object
Position    1150 non-null object
Age         1567 non-null int64
dtypes: int64(1), object(3)
memory usage: 61.2+ KB
None

以及python堆栈的完整回溯。在

^{pr2}$

我设法让post-mortem调试器启动,检查pandas中最后一次map调用的变量的参数。不过,我看不出数据有什么问题。可能是因为这两个索引不是从0或1开始编号的吗?它们是否都需要以相同偏移量开始的索引?在

我也有点怀疑也许地图被跟踪了itertools.imap所以我排除了import itertools,而是使用了from itertools import tee。然而,这并没有解决问题。在

我还尝试在合并之前从表中删除NaN值,但仍然失败。我能做些什么来解决这个问题?在

布莱登。在

更新 我检查了left_keys的值:它包含一个单元格值的list([])元素。在

更新

def name_matcher(Detail):
        res = re.findall('[A-Za-z\.\'\-]+ [A-Za-z\'\-]+', Detail)

        if len(res) != 0:
                return res[0]
        else:
                return []

就在这里。在

我不能那样做。。。在

def name_matcher(Detail):
        res = re.findall('[A-Za-z\.\'\-]+ [A-Za-z\'\-]+', Detail)

        if len(res) != 0:
                return res[0]
        else:
                return ''

这就是解决办法。我有一个应用程序使用这些功能。问题现在很明显,因为空的名称将返回空列表而不是空字符串。在

谢谢你们的帮助!在


Tags: columns数据namereturnobjectresnullentries