【问题标题】:Python pandas | how to assign keywords extracted from a column to another column?Python 熊猫 |如何将从一列中提取的关键字分配给另一列?
【发布时间】:2017-11-09 03:08:15
【问题描述】:

我有一个如下的熊猫数据框,每个元组中都有文本字符串:

  Text Col
-----------
I have an apple.
She eats orange.
Tom likes banana and orange

我想从“Text Col”中提取关键字并将关键字分配为另一列“keyword col”中的值

  Text Col                              KeyWord
-----------------------------------------------------
I have an apple.                        apple
She eats orange.                        orange
Tom likes banana and orange             banana, orange

我只知道我可以检查字符串是否包含特定的关键字 df['Text Col'].str.contains('apple|orange|banana') 但我不知道如何将列中包含的关键字分配给另一列。

用谷歌搜索过,但没有任何类似的问题。 有人可以帮我解决这个问题吗?

非常感谢!

【问题讨论】:

    标签: python string pandas keyword


    【解决方案1】:

    使用.str.extract,例如

    df['Text Col'].str.extract('(apple|orange|banana)', expand = False)
    

    .extractall 后跟.unstack,如果您预计会有多个匹配项:

    matches = df['Text Col'].str.extractall('(apple|orange|banana)').unstack()
    

    你需要加入他们;如果您的数据集很小,您可以在纯 Python 中执行此操作:

    df['extracted'] = [','.join(filter(None,li)) for li in matches.values]
    

    如果你坚持在 pandas 中这样做,你可以在列上使用循环,虽然看起来很乱:

    df['extracted'] = ''
    for _,col in matches.fillna('').iteritems():
        df['extracted'] += col + ','
    df['extracted'] = df['extracted'].str.rstrip(',')
    

    【讨论】:

    • 你好ken wei,谢谢你的回答。我尝试了此代码,但不幸的是,当字符串包含多个关键字时,此代码仅返回一个单词。例如对于文本“汤姆喜欢香蕉和橙子”,它只返回香蕉,但都返回“香蕉,橙子”。是否可以同时返回多个关键字?
    • 非常感谢!!我对 python 中的文本处理不太熟悉,并且正要编写一个循环来执行此操作......这为我节省了很多时间,非常感谢
    猜你喜欢
    • 2023-02-15
    • 2023-01-20
    • 2019-10-12
    • 2020-12-11
    • 2017-12-18
    • 1970-01-01
    • 2022-11-10
    • 2015-04-14
    • 1970-01-01
    相关资源
    最近更新 更多