我将数据从 Pandas 数据框中附加到列表中,但无法对其使用列表理解?

import pandas as pd

data = {'Sl No':[1,2,3,4,5,6,7,8,9,10],'Content':['abcd','efhg','acsd','drtsf','dfthsrfv','ftyjdrtg','dthrsgae','awefawef','thr','hdthrt']}

dataframe = pd.DataFrame(data)

all_data =[]

all_data.append(dataframe.Content.values)

现在,如果我尝试添加如下所示的列表理解,则会出现错误。


txt_1 = " ".join(v for v in all_data if v not in string.punctuation).lower()

TypeError: 'in ' 需要字符串作为左操作数,而不是 numpy.ndarray


除了使用 .extend() 命令之外,任何人都可以解释如何克服这一点吗?


UYOU
浏览 110回答 2
2回答

米琪卡哇伊

看看all_data:In [679]: all_dataOut[679]: [array(['abcd', 'efhg', 'acsd', 'drtsf', 'dfthsrfv', 'ftyjdrtg',        'dthrsgae', 'awefawef', 'thr', 'hdthrt'], dtype=object)]这是一个包含一个数组的列表。这意味着v你理解的the将是这个数组,而不是数组中的一个词。extend而不是在append将数组添加到列表时解压缩数组。另一个选项是添加一个图层以从列表中选择数组,然后循环,for v in all_data[0]。如果您将appended单词列表添加到列表中,您的列表理解将不起作用。

湖上湖

有几种方法可以解决这个问题。由于all_data是一个包含字符串数组的列表,因此您需要实际访问该数组而不是all_data.假设 中可能有多个元素all_data,您可以使用您发布的代码的嵌套列表理解版本:txt_1 = " ".join(s for v in all_data for s in v if s not in string.punctuation).lower()另一方面,如果您只想要 中的值dataframe['Content'],您有两个选择:txt_2 = " ".join(v for v in all_data[0] if v not in string.punctuation).lower()txt_3 = " ".join(v for v in dataframe.Content if v not in string.punctuation).lower()选项 2 特指存储all_data在位置 0的数组,而选项 3 通过dataframe['Content']直接访问绕过了对列表的需要。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python