Pandas链从\u iterable:类型为“”的错误对象itertools.chain公司'没有len()

2024-04-25 14:26:47 发布

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

具有如下数据帧:

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

我正在使用链从\u iterable要提取列表中的每个项并将结果添加到数据帧,请执行以下操作:

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

我怎么能这样做:

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

最后一次创建dataframe时出现错误TypeError: object of type 'itertools.chain' has no len()。两个数据帧创建之间的区别是什么?如何修复上次创建中的错误?你知道吗

谢谢:)


Tags: 数据namefromchaindataframedfdataiterable
2条回答

你也可以只使用一个列表。你知道吗

>>> pd.DataFrame({'word': [w for group in df_data['name'] for w in group]})
        word
0        ABC
1        DOS
2       TRES
3        XYZ
4   MORTGAGE
5  SOLUTIONS

使用chain.from_iterable返回迭代器,而不是列表/序列。旧版本的Pandas需要传递给数据帧构造函数的对象具有len,以便它知道要在后端分配的数组大小。chain对象不提供(也不应该提供)。你知道吗

你可以把它包装成list来解决你的问题:

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

相关问题 更多 >