为什么Python告诉我**TypeError:unhabable type:';列表';**当我有一个数据帧时?

为什么Python告诉我**TypeError:unhabable type:';列表';**当我有一个数据帧时?,python,pandas,list,Python,Pandas,List,我有下面的数据帧和我想比较的第二个类似的数据帧。 问题是我认为我混淆了数据类型: df1 = pd.DataFrame(pd.read_csv("csv", delimiter=';', header=None, skiprows=1, names=['1', '2'])) df['1'].str.replace(r'[^\w\s]+', '') df['1'] = df1['1'].str.replace('\d+', '') df = df.apply(nltk.word

我有下面的数据帧和我想比较的第二个类似的数据帧。 问题是我认为我混淆了数据类型:

df1 = pd.DataFrame(pd.read_csv("csv", delimiter=';', header=None, skiprows=1, names=['1', '2']))
df['1'].str.replace(r'[^\w\s]+', '')
df['1'] = df1['1'].str.replace('\d+', '')
df = df.apply(nltk.word_tokenize)
df = [nltk.word_tokenize(str(1)) for 1in df]
df = df.apply(lambda x: [item.lower() for item in x if item.lower() not in stop_words])
df = set(df)

类型错误:不可损坏的类型:“列表”

在倒数第二行,您正在生成一系列列表。然后将该系列转换为集合。您不能这样做,因为集合的元素需要是可散列的,而列表则不是(正如TypeError中所说的)。与列表不同,元组是可散列的。假设您的其余代码正常工作(我无法检查),请尝试


现在它说AttributeError:“list”对象在您的第一行代码中没有属性“apply”,我也在没有apply的情况下尝试了它,而lower()也不能用于list。因此,该列表似乎存在于最后一行之前,即使它必须是dataframe。问题似乎出现在dataframe之后的第一行,因为datafram没有Strings。如果没有完整的示例,很难判断。例如,
[nltk.word\u tokenize(str(1))For 1in df]
也是无效的python。1在那里而不是行名称。我想将df1中的[“Paul吃苹果”]与df2中的[“Eva吃菠萝”]进行比较,在df1中有500行,在df2中有6000行。为此,我需要标记它们并将它们转换为集合
df = df.apply(lambda x: tuple(item.lower() for item in x if item.lower() not in stop_words))
df = set(df)