【问题标题】:How to check if a certain df['column'] contains a word from a list Python?如何检查某个 df['column'] 是否包含 Python 列表中的单词?
【发布时间】:2021-11-15 03:36:56
【问题描述】:

关于如何查看某个单词是否在 pandas 列中的任何提示?

# initialise data of lists.
data = {'Colour':['Blue andtext', 'Greys', 'Potato', 'Yellow','Tree'],
        'Values':[20, 21, 19, 18,44]}
 
df2 = pd.DataFrame(data)

假设:

colours = ['Blue','Grey','Yellow']

如何检查 df2['Colour'] 是否实际上是一种颜色并在新列中表示它?

输出应该是

Colour           Value   Actualcolour
Blue andtext     20      Blue
Greys            21      Grey
Potato           19      NaN
Yellow           18      Yellow
Tree             44      Nan

【问题讨论】:

    标签: python-3.x pandas dataframe loops


    【解决方案1】:

    使用pd.Series.whereisin

    df2["Actualcolour"] = df2["Colour"].where(df2["Colour"].isin(colours))
    
    print (df2)
    
       Colour  Values Actualcolour
    0    Blue      20         Blue
    1    Grey      21         Grey
    2  Potato      19          NaN
    3  Yellow      18       Yellow
    4    Tree      44          NaN
    

    或使用pd.Series.extract 并在需要时添加单词边界或忽略大小写:

    df2["ActualColor"] = df2["Colour"].str.extract(f"({'|'.join(colours)})")
    
    print (df2)
    
             Colour  Values ActualColor
    0  Blue andtext      20        Blue
    1         Greys      21        Grey
    2        Potato      19         NaN
    3        Yellow      18      Yellow
    4          Tree      44         NaN
    

    【讨论】:

    • 感谢您的回答!可惜我第一次说错了,你能再看一遍吗?
    【解决方案2】:

    另一个可能的答案是使用.apply 将函数应用于相关列:

    df2["ActualColour"] = df2["Colour"].apply(lambda x: x if x in colours else np.nan)
    

    【讨论】:

      【解决方案3】:

      这个怎么样?

      df2['ActualColour'] = [x if x in colours else np.NaN for x in df2.Colour]
      

      您也可以将colours 转换为 df 并加入他们

      【讨论】:

      • 感谢您的回答!不小心我第一次说错了,如果你有时间可以再看一下吗?
      猜你喜欢
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 2018-04-21
      • 2023-04-08
      • 2021-06-24
      相关资源
      最近更新 更多