当前位置: 首页 > 知识库问答 >
问题:

在pandas中执行nltk.stem.SnowballStemmer

秦承允
2023-03-14

我有一个四列DataFrame,其中有两列标记化的单词,这些单词已经删除并转换为小写,现在正试图阻止。

我不确定如果应用()方法访问系列加上它的单个单元格,或者如果我需要另一种方式进入每个记录,所以尝试了两者(我想!)

从nltk.stem导入SnowballStemmer
stemmer=nltk.stem.SnowballStemmer('english')

df_2['Headline']=df_2['Headline'].应用(lambda x:stemmer.stem(项目)用于x中的项目)

--------------------------------------------------------------------------- TypeError Traceback(最近的调用最后)在 () ----

~\AppData\Local\Continuum\anaconda3\envs\learn env\lib\site packages\pandas\core\series.py in apply(self,func,convert\u dtype,args,**kwds)3192
else:3193 values=self.astype(object).values-

熊猫/_libs/src\inference.pyx_libs.lib.map_infer()

类型错误:生成器对象不可调用

我相信这个TypeError类似于那个说“列表”对象不可调用的对象,并修复了那个带有应用()方法的对象

df_2['Headline']=df_2['Headline'].apply(lambda x:stemmer.stem(x))

---------------------------------------------------------------------------()----

~\AppData\Local\Continuum\anaconda3\envs\learn env\lib\site packages\pandas\core\series.py in apply(self,func,convert\u dtype,args,**kwds)3192
else:3193 values=self.astype(object).values-

熊猫/_libs/src\inference.pyx_libs.lib.map_infer()

在(x)----

stem(self,word)1415 1416中的~\AppData\Local\Continuum\anaconda3\envs\learn env\lib\site packages\nltk\stem\snowball.py-

列表对象没有属性

共有1个答案

孙德本
2023-03-14

您需要为应用程序指定轴。

下面是一个完整的工作示例:

import pandas as pd

df = pd.DataFrame({
    'col_1' : [['ducks'], ['dogs']],
    'col_2' : [['he', 'eats', 'apples'], ['she', 'has', 'cats', 'dogs']],
    'col_3' : ['some data 1', 'some data 2'],
    'col_4' : ['another data 1', 'another data 2']
})
df.head()

输出

    col_1   col_2                   col_3       col_4
0   [ducks] [he, eats, apples]      some data 1 another data 1
1   [dogs]  [she, has, cats, dogs]  some data 2 another data 2

现在,让我们为标记化列应用词干:

import nltk
from nltk.stem import SnowballStemmer
stemmer = nltk.stem.SnowballStemmer('english')

df.col_1 = df.apply(lambda row: [stemmer.stem(item) for item in row.col_1], axis=1)
df.col_2 = df.apply(lambda row: [stemmer.stem(item) for item in row.col_2], axis=1)

检查数据帧的新内容。

df.head()

输出

    col_1   col_2                   col_3       col_4
0   [duck]  [he, eat, appl]         some data 1 another data 1
1   [dog]   [she, has, cat, dog]    some data 2 another data 2
 类似资料:
  • 主要内容:SELECT,WHERE,GroupBy,LIMIT我们知道,使用 SQL 语句能够完成对 table 的增删改查操作,Pandas 同样也可以实现 SQL 语句的基本功能。本节主要讲解 Pandas 如何执行 SQL 操作。 首先加载一个某连锁咖啡厅地址分布的数据集,通过该数据集对本节内容进行讲解。 输出结果如下: SELECT 在 SQL 中,SELECT 查询语句使用 把要查询的每个字段分开,当然您也可以使用 来选择所有的字段。如下所示: 对

  • 问题内容: 在熊猫数据框中,如何应用一种excel left(’state’,2)只接受前两个字母。理想情况下,我也想学习如何在数据框中使用左,右和中间。因此,对于此特定示例,需要一个等效而不是一个“技巧”。 我想得到这个: 问题答案: 列中每个值的前两个字母: 最后的两个是。不知道您到底想要什么,但是您可以使用方法将任意函数应用于列:

  • 问题内容: 选择/过滤索引为MultiIndex的数据框的行的最常见的熊猫方法是什么? 根据单个值/标签切片 根据一个或多个级别的多个标签进行切片 根据布尔条件和表达式进行过滤 哪种方法在什么情况下适用 为简单起见假设: 输入数据框没有重复的索引键 下面的输入数据框只有两个级别。(此处显示的大多数解决方案一般都适用于N级) 输入示例: 问题1:选择单个项目 如何选择级别为“一个”的行为”a”的行?

  • 我需要选择满足以下条件的行: 如果(X为真,Z为假)(X为假,Z为真),则将True作为值赋给新列。 我试过这个: 但是我得到了以下错误: ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 我尝试使用任何(),如下所示

  • 问题内容: 如果应用程序是第一次加载,我正在尝试执行segue。我可以在调试器中看到我的打印消息,但是Perform Segue无法正常工作。我没有任何错误。有人可以告诉我怎么了吗? 问题答案: 您不能在viewDidLoad()中使用performSegue()。将其移动到viewDidAppear()。 在viewDidLoad()时,当前视图甚至还没有附加到窗口,因此尚无法进行隔离。

  • 问题内容: 我正在用PHP生成典型的Web 2.0 HTML页面:它包含许多标记和JavaScript代码,这些事件将在load事件之后实质上改变DOM。 有没有一种方法可以直接从PHP获取最终的HTML代码,而无需使用任何浏览器打开页面? 例如,假设页面的HTML是(仅作为示例): 该HTML保存在PHP变量中。现在,我想将该变量传递给某个函数,该函数将返回$ result = 。 这可能吗?