python - 蟒蛇熊猫。删除值包含在同一列的另一个单元格中的单元格
问题描述
我有一个这样的数据框:
A B
exa 3
example 6
exam 4
hello 4
hell 3
我想删除作为另一行子字符串的行并保留最长的行(注意 B 已经是 A 的长度)
我希望我的桌子看起来像这样:
A B
example 6
hello 4
我考虑过以下布尔过滤器,但它不起作用:(
df['Check'] = df.apply(lambda row: df.count(row['A'] in row['A'])>1, axis=1)
解决方案
这是不平凡的。但是我们可以利用对B
数据进行排序,将每个值与仅比自身大的字符串进行比较,以获得略优于 O(N^2) 的解决方案。
df = df.sort_values('B')
v = df['A'].tolist()
df[[not any(b.startswith(a) for b in v[i + 1:]) for i, a in enumerate(v)]].sort_index()
A B
1 example 6
3 hello 4
推荐阅读
- razor - 使用 razor 中当前页面 url 的变量重定向到不同的页面
- c# - 如何在 C# 中加载带有关联 MTL(纹理)的 Obj
- python - python 3.X windows 多处理
- c# - 用json.net c#反序列化json不输出所有字段
- image - 为 MERN 应用程序保存约 500 个图像文件的位置
- jquery - 未定义每个函数的索引
- javascript - jQuery 动态检查单选按钮不工作,硬编码工作
- c# - 使用 GCP 的数据存储区时如何区分代码是在模拟器中运行还是在 GKE 中运行
- c - 使用 hashTable 在我的程序中输出错误
- python - 如何从 sqlite3 获取“NOT NULL”