我正在尝试编写一些有效的代码,以删除熊猫数据框的行,其中特定列中的值是同一列中其他值(至少一个值的子集)的子字符串。例如,考虑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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句