【问题标题】:dataframe select a word on the text数据框在文本上选择一个单词
【发布时间】:2021-12-14 21:47:28
【问题描述】:

我在输入中有一个数据名,我想在“本地化”列中提取此列表中的单词 [“SECTION 11”,“CÔNE”,“BELLY”],我必须创建新列“单词” 在数据框中。如果列表中的单词存在于“本地化”列中,我会在创建的“单词”列中填写单词。否则我将全文放在“单词”列中 这是我的数据框

我创建新列“单词” 我从列表中选择了包含单词的行 我用从列表中找到的关键字填写“单词”列

["SECTION 11","CÔNE","BELLY"]
df["temp"]=df["localisation"].str.extract("Localisation[\s]*:.*\n([^_\n]{3,})\n[^\n]*\n")
df["word"]=df["temp"].str.extract("(SECTION 11|CÔNE|BELLY)")
df["temp"]=df["localisation"].str.extract("Localisation[\s]*:.*\n([^_\n]{3,})\n[^\n]*\n")
df["word"]=df["temp"].str.extract("(SECTION 11|CÔNE|BELLY)")

我的问题如果在“本地化”列中找不到列表中的单词,我无法放置全文。我的行中有空值或者我必须放全文

【问题讨论】:

    标签: python regex pandas


    【解决方案1】:

    您需要使用.fillnadf["localisation"] 作为参数:

    df["word"]=df["localisation"].str.extract(r"\b(SECTION 11|CÔNE|BELLY)\b", expand=False).fillna(df["localisation"])
    

    还请注意,我建议使用r"\b(SECTION 11|CÔNE|BELLY)\b",这是一个带有单词边界的正则表达式,仅将您的替代项作为整个单词进行匹配。请注意,单词边界 \b 在 Python re 中可识别 Unicode,这在 Pandas 的幕后使用。

    如果不需要全词搜索,可以继续使用r"SECTION 11|CÔNE|BELLY"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-15
      • 2019-04-18
      • 2016-09-07
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多