Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
熊猫文本分类(python)_Python_Pandas_Text_Classification - Fatal编程技术网

熊猫文本分类(python)

熊猫文本分类(python),python,pandas,text,classification,Python,Pandas,Text,Classification,因此,我有一个非常大的数据框架,由事务数据组成: description amount foo 10 bar 5 baz 9 foo bar 12 foobar 15 bar baz 20 bazbar 19 预期产出如下: description amount tag foo 10 foo bar 5

因此,我有一个非常大的数据框架,由事务数据组成:

description   amount
foo           10
bar           5
baz           9
foo bar       12
foobar        15
bar baz       20
bazbar        19
预期产出如下:

description   amount    tag
foo           10        foo 
bar           5         bar
baz           9         baz
foo bar       12        foo, bar
foobar        15        foobar 
bar baz       20        bar, baz
bazbar        19        bazbar
我的思考过程如下:

description   amount    tag
foo           10        foo 
bar           5         bar
baz           9         baz
foo bar       12        foo, bar
foobar        15        foobar 
bar baz       20        bar, baz
bazbar        19        bazbar
  • df['description']
  • 然后,对于新列
    df['tag']
    ,对于列表中的每个项目,执行
    isin
    并分配相关标记
我不知道如何创建唯一的
单词列表。另外,我不确定这是解决这个问题的正确方法

谢谢你的帮助

a = pd.DataFrame({'description': ['foo', 'bar', 'bas', 'foo bar', 
'foobar', 'bar baz', 'bazbar']})
a['tag'] = a.description.apply(lambda x: ', '.join(x.split()))
print(a)

description    tag
foo            foo
bar            bar
bas            bas
foo bar        foo, bar
foobar         foobar
bar baz        bar, baz
bazbar         bazbar

A
.apply(lambda…
是pandas中一个很好的范例,它将遍历每一行并执行一个函数。在这里,我通过
.split()
在描述栏中用空格分隔的单词列出一个列表,然后通过
.join()

将其转换回带有
分隔符的字符串。为什么
bazbar
被归类为
baz,bar
,而不是作为一个唯一的单词?与
foobar
相同。因为,我想要部分字符串匹配可能是因为
'bazbar'==True
?是的@AChampion是正确的。我理解,但是你如何知道部分字符串,为什么
bazb
不是部分字符串,如果你只想要唯一的标记,你如何找到“唯一的单词”(在您的示例中,我没有看到这个标记的示例),请使用
lambda x:','.join(set(x.split())