开发者社区 问答 正文

类型为“itertools”的错误对象。chain'没有len()

具有如下数据流:

df_data=pd.DataFrame({'name':[['ABC','DOS','TRES'],['XYZ','MORTGAGE','SOLUTIONS']],
                      'original': ['ABC DOS TRES','XYZ MORTGAGE SOLUTIONS']})

我使用chain.from_iterable提取列表中的每一项,并将结果添加到一个dataframe:

s = pd.DataFrame(chain.from_iterable(df_data['name']),columns=['word'])

我怎么能做这样的事情:

t = pd.DataFrame({'word': chain.from_iterable(df_data['name'])})

dataframe的最后一次创建给出了一个错误TypeError: object的类型为“itertools”。chain'没有len()。两个dataframe的创建有什么不同?如何在最后一个创建的错误可以修复? 谢谢:) 问题来源StackOverflow 地址:/questions/59382676/pandas-chain-from-iterable-error-object-of-type-itertools-chain-has-no-len

展开
收起
kun坤 2019-12-27 17:02:26 1973 分享 版权
1 条回答
写回答
取消 提交回答
  • 使用chain.from_iterable返回一个迭代器,而不是一个列表/序列。旧版本的panda需要传递给数据帧构造函数的对象有一个len,这样它就知道后端要分配多大的数组。chain对象不提供(也不应该提供)。 你可以把它放在列表中解决你的问题:

    t = pd.DataFrame({'word': list(chain.from_iterable(df_data['name']))})
    
    2019-12-27 17:02:36
    赞同 展开评论
问答地址: