使用熊猫连接系列数据时出现怪异错误

问题描述 投票:0回答:1

我有一堆带有文本数据行的数据框。我从每个数据框中导入了一个列,然后将它们附加到列表中,如下所示:

import pandas as pd
import glob

path = 'filepath' # use your path
all_files = glob.glob(path + "/*.csv")

li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df['body']) 

现在,我试图创建一个文档集,所以我想对所有行进行串联/合并/联接(不确定哪种方法更好),以便每一列成为一个单元格。因此,列表中的每个元素应该是一个单元格,而不是单元格的行。

当我连接列表中的单个元素时,它会执行我想要的操作。例如,

li[0].str.cat(sep = "")

创建单个文本单元格。

但是,当我像这样遍历列表时:

corpus = []

for i in li:
    corpus.append(li[i].str.cat(sep = ""))

我收到以下错误:

----> 4     corpus.append(li[i].str.cat(sep = ""))

TypeError: list indices must be integers or slices, not Series

我确信问题很简单,但是我没有看到这里发布有关此问题的答案,而且我也不知道为什么会发生此错误(因为str.cat应该适用于Series数据)。任何帮助,将不胜感激。

谢谢!

python pandas text concatenation corpus
1个回答
0
投票

在我看来,您对for循环语法的工作方式抱有错误的期望:

for i in li:
    corpus.append(li[i].str.cat(sep = ""))

使用语法for __ in __时,应将其读为for item in list,而不是for index in list

由于i已经是项目本身,而不是索引,因此尝试使用i索引到li(您已在其中编写了li[i])是无效的。这就是为什么您会收到有关“列表索引”的错误的原因。

因此,这应该对您有用:

for i in li:
    corpus.append(i.str.cat(sep = ""))

作为一个旁注,我建议使用i以外的变量来避免这种混淆-也许是e表示元素,或者更好的是(IMO),只是确切地说明了该元素是什么。

© www.soinside.com 2019 - 2024. All rights reserved.