python - 删除包含熊猫数据框同一列中值子字符串的行的最快方法
问题描述
我正在尝试编写一些有效的代码来删除 pandas 数据帧的行,这些数据帧的特定列中的值是同一列中其他值(至少一个值的子集)的子字符串。例如,考虑B
以下输入数据框中的列:
| | A | B |
|---|----|------------|
| 0 | 22 | ab |
| 1 | 33 | abc |
| 2 | 44 | abcd |
| 3 | 55 | a |
| 4 | 66 | john |
| 5 | 77 | john Doe |
| 6 | 88 | jo |
| 7 | 99 | john hi Doe|
输出数据框:
| | A | B |
|---|----|------------|
| 2 | 44 | abcd |
| 5 | 77 | john Doe |
| 7 | 99 | john hi Doe|
第 0、1 和 3 行已被删除,因为它们的列B
(ab
、abc
和a
)的所有值都是该列中其他值的子字符串(即abcd
)。第 4 行和第 6 行也是如此。
解决方案
您可以使用一些列表综合来检查行字符串是否在数据框的其他行中:
m = df['B'].apply(lambda x: any([x for y in df['B'] if x != y if x in y]))
df = df[~m]
df
Out[1]:
A B
2 44 abcd
5 77 john Doe
7 99 john hi Doe
推荐阅读
- reactjs - 当 React 中有重复代码时,最好将它们放在一个数组中并使用 map 进行渲染,还是手动编写整个标记?
- python - 初学者尝试在 Python 中使用 end=' ' 运行单行输出但面临 SyntaxError
- git - 如何在 Bitbucket 中实现 --ignore-matching-lines?
- c# - 使用 TLSharp 的 GetFile 函数的 FILEREF_UPGRADE_NEEDED
- node.js - 如何在 react-native 中实现用户发布/提要
- python - C++ 使用 ShellExecuteA 执行 python 文件
- c# - Windows UWP BluetoothLE 配对
- python - 如何向特定频道发送加入/离开消息
- kubernetes - 创建入口资源
- javascript - 在 Promise 的存储桶中获取所有 Amazon S3 文件