【问题标题】:Text classification in pandas (python)pandas(python)中的文本分类
【发布时间】:2018-06-02 01:29:42
【问题描述】:

所以我有一个由交易数据组成的非常大的 pandas 数据框:

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

我的思考过程如下:

  • df['description'] 的所有行中创建一个巨大的唯一words 列表
  • 然后对于新列df['tag'],对于列表中的每个项目,执行isin 并分配相关标签。

我不确定如何创建唯一words 列表。另外,我不确定这是解决此问题的正确方法。

感谢任何帮助!

【问题讨论】:

  • 为什么bazbar 被归类为baz, bar,而不被视为一个唯一的词?与foobar 相同。
  • 因为,我想要部分字符串匹配
  • 可能是因为'baz' in 'bazbar' == True?
  • 是的@AChampion 是正确的。
  • 我明白了,但是你是怎么知道部分字符串的,为什么bazb不是部分字符串,你是怎么找到“唯一词”的

标签: python pandas text classification


【解决方案1】:
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

.apply(lambda...) 是 pandas 中的一个很好的范例,它将遍历每一行并执行一个功能。在这里,我通过.split() 将描述列中以空格分隔的单词列出,然后通过.join() 将其转换回具有, 分隔符的字符串

【讨论】:

  • 如果您只想要唯一标签(我没有在您的示例中看到会标记的示例),请使用 lambda x: ', '.join(set(x.split()))
猜你喜欢
  • 2019-03-09
  • 1970-01-01
  • 2016-11-19
  • 2017-02-06
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多