我有一个带有"Employee Common Name"和"DisplayName"的DF,如果"Employee Common Name"在"DisplayName"内,我不想 Select 该行.

我还没有找到这样做的方法,但我目前(失败的)解决办法是,如果"Employee Common name"位于"displayName"内,则创建一个Boolean列.

然而,一切都是假的.

工作示例:


import pandas as pd
df = pd.DataFrame({'Employee Common Name': ['Bob', 'Makenzie', 'Alice'], 
                   'DisplayName': ['Robert Inger', 'Kenzie Doe', 'Alice Cooper']})

df['Allowed']=df.apply(lambda x: str(df['Employee Common Name']) in str(df['DisplayName']).lower(), axis=1)

预期输出:

Employee Common Name DisplayName Allowed
Bob Robert Inger False
Makenzie Kenzie Doe False
Alice Alice Cooper True

我已经在‘Employee Common Name’上使用了str.strie()

推荐答案

你做得很好,有一个小错误.您从未使用过x(lambda函数的参数).使用x而不是df访问当前行(访问整个系列).

此外,正如在其他答案和注释中指出的那样,您需要将.lower()应用于两个字符串或不应用于任何一个字符串.

import pandas as pd
df = pd.DataFrame({'Employee Common Name': ['Bob', 'Makenzie', 'Alice'], 
                   'DisplayName': ['Robert Inger', 'Kenzie Doe', 'Alice Cooper']})


df['Allowed'] = df.apply(
    lambda x: x['Employee Common Name'].lower() in x['DisplayName'].lower(), axis=1
)

yields 与预期一致

enter image description here

Python相关问答推荐

Python中绕y轴曲线的旋转

如何从pandas的rame类继承并使用filepath实例化

Pre—Commit MyPy无法禁用非错误消息

无法在Docker内部运行Python的Matlab SDK模块,但本地没有问题

在Python中调用变量(特别是Tkinter)

在极中解析带有数字和SI前缀的字符串

Flask Jinja2如果语句总是计算为false&

将标签移动到matplotlib饼图中楔形块的开始处

重置PD帧中的值

搜索按钮不工作,Python tkinter

递归函数修饰器

需要帮助使用Python中的Google的People API更新联系人的多个字段'

解决Geopandas和Altair中的正图和投影问题

没有内置pip模块的Python3.11--S在做什么?

上传文件并使用Panda打开时的Flask 问题

极点:在固定点扩展窗口

普洛特利express 发布的人口普查数据失败

两个名称相同但值不同的 Select 都会产生相同的值(discord.py)

3.我无法找到制作这种三角形图案的方法

检测并显示网页更改