繁体   English   中英

Pandas:检查一列中的字符串值是否是 dataframe 同一行中另一列的字符串的一部分 - 当前脚本返回全部是

[英]Pandas: check if string value in one column is part of string of another column in same row of dataframe - current script returning all Yes

我有以下 dataframe:

df = pd.DataFrame([['50030', '36 @ 3159 W/270, LWD[GR,RES,PWD] @ 4015', '3159'], 
                   ['50030', '36 @ 3159 W/270, LWD[GR,RES,PWD] @ 4015', '3994'],
                   ['50030', '36 @ 3159 W/270, LWD[GR,RES,PWD] @ 4015', '5401'],
                   ['50030', '26 @ 3994, LWD[GR,RES,PWD] @ 5430, 20 @ 5401', '3159'],
                   ['50030', '26 @ 3994, LWD[GR,RES,PWD] @ 5430, 20 @ 5401', '3994'],
                   ['50030', '26 @ 3994, LWD[GR,RES,PWD] @ 5430, 20 @ 5401', '5401']],
                  columns = ["WKEY", "Description", "DEPTH"])

数据框

我想将 DEPTH 列中的值(这是一个字符串值)与 Description 列中的字符串仅针对同一行进行比较 一个名为“比较”的新列将有一个是或否,这取决于它是否存在。

基于这篇文章: python pandas - 检查列中的部分字符串是否存在于其他列中,我尝试了以下代码:

df['Compare'] = df['DEPTH'].apply(lambda x: 'Yes' if df['Description'].str.contains(x).any() else 'No')

但是,它返回是的所有行:

带有新代码的数据框

应该是,不,不,不,不,是,是。

最终计划是删除所有在 DEPTH 列中没有值的行,这些行也列在同一行的 Description 列中的某处。

我觉得我离让它发挥作用只有一步之遥,所以任何方向都会受到赞赏。

谢谢!

在你的情况下

df['Compare'] = df.apply(lambda x: 'Yes' if x['DEPTH'] in x['Description'] else 'No',axis=1)
df
Out[133]: 
    WKEY                                   Description DEPTH Compare
0  50030       36 @ 3159 W/270, LWD[GR,RES,PWD] @ 4015  3159     Yes
1  50030       36 @ 3159 W/270, LWD[GR,RES,PWD] @ 4015  3994      No
2  50030       36 @ 3159 W/270, LWD[GR,RES,PWD] @ 4015  5401      No
3  50030  26 @ 3994, LWD[GR,RES,PWD] @ 5430, 20 @ 5401  3159      No
4  50030  26 @ 3994, LWD[GR,RES,PWD] @ 5430, 20 @ 5401  3994     Yes
5  50030  26 @ 3994, LWD[GR,RES,PWD] @ 5430, 20 @ 5401  5401     Yes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM