python-3.x - 在 Python 中检查两个字符串列是否相互包含
问题描述
给定一个小数据集如下:
id a b
0 1 lol lolec
1 2 rambo ram
2 3 ki pio
3 4 iloc loc
4 5 strip rstrip
5 6 lambda lambda
我想c
根据以下标准创建一个新列:</p>
如果a
等于或子串b
或反之亦然,则创建一个c
具有值的新列1
,否则保持为0
。
我怎么能在 Pandas 或 Python 中做到这一点?
预期结果:
id a b c
0 1 lol lolec 1
1 2 rambo ram 1
2 3 ki pio 0
3 4 iloc loc 1
4 5 strip rstrip 1
5 6 lambda lambda 1
要检查a
is inb
或b
is in a
,我们可以使用:
df.apply(lambda x: x.a in x.b, axis=1)
df.apply(lambda x: x.b in x.a, axis=1)
解决方案
使用zip
和列表理解:
df['c'] = [int(a in b or b in a) for a, b in zip(df.a, df.b)]
df
id a b c
0 1 lol lolec 1
1 2 rambo ram 1
2 3 ki pio 0
3 4 iloc loc 1
4 5 strip rstrip 1
5 6 lambda lambda 1
或使用apply
,只需将这两个条件与or
:
df['c'] = df.apply(lambda r: int(r.a in r.b or r.b in r.a), axis=1)
推荐阅读
- amazon-s3 - aws s3 cp 将文件下载到匹配文件名的本地
- java - 可选或默认的泛型参数
- javascript - 从 Javascript 中的 HTML 表单获取数据总是产生字符串?
- kotlin - 有没有优雅的方法可以在 kotlin 和箭头中将 List 变成 NonEmptyList?
- reactjs - 反应原生点击突出显示的单词
- performance-testing - JMETER 4. 0 | JMeter 分布式负载测试 | jp@gc - 步进线程组 | 报告
- php - laravel 护照模块中个人访问令牌的过期时间
- android - 在密钥库 keystore.jks 中找不到别名为“foo”的密钥
- swift - 无法取消选择 DLRadioButton 单选按钮
- php - 如何在数据表中将 group_concat() 列显示为一列?