python - 删除熊猫df中的列表字符串startswith
问题描述
我有 df 行包含列表,并希望删除与其他字符串组合的特定字符串。
df['res']:
AL1 A 15, CY1 A 16, CY1 A 20, GL1 A 17, GL1 A 62,HOH A 604, HOH A 605, L21 A 18, MG A 550, PR1 A 36, TH1 A 19, TH1 A 37, TY1 A 34, VA1 A 14, HOH A 603, VA1 A 35
期望的输出:[用其他数字删除 HOH]
AL1 A 15, CY1 A 16, CY1 A 20, GL1 A 17, GL1 A 62, L21 A 18, MG A 550, PR1 A 36, TH1 A 19, TH1 A 37, TY1 A 34, VA1 A 14, VA1 A 35
我试过这个:
data['res'].str.split().apply(lambda x: [k for k in x if k.startswith('HOH')])
解决方案
问题是,如果你不使用.split()
其他任何东西,每个子字符串也会被拆分。
所以这... ,HOH A 604 ...
将分裂成['...', ',' ,'HOH', 'A', '604', '...']
.
据我了解,您想HOH
用以下数字删除每个,对吗?
这样做.split()
将导致HOH
仅删除并保留A
& 604
。
如果您使用.split(',')
逗号作为参数,那么我们将得到逗号之间的所有内容。
我看到的问题startswith
是有时你的字符串在逗号后有一个额外的空格,有时它们没有(例如,HOH A 604 & , HOH A 605
)
因此我建议not in
改用。但是:请注意,这会删除所有包含的子字符串,HOH
即使它们位于末尾。
尝试这个:
df['res'].str.split(',').apply(lambda x: [k for k in x if 'HOH' not in k])
如果您需要再次使用字符串,则单元格值现在是字符串列表,请尝试以下操作:
df['res'].str.split(',').apply(lambda x: ','.join([k for k in x if 'HOH' not in k]))
推荐阅读
- php - Ajax 表单数据传递
- python-3.x - 无法通过 Pygame 的 Image.load() 打开图像
- python - 在 CSV 文件 Python 中编辑/更改值
- python - 在这个 numpy 数组与不同数组相乘的 numpy 问题中发生了什么?
- c# - 在 C# 中以编程方式创建的 Windows 任务计划程序不会自动运行
- spring - Spring批处理作业无限运行
- unreal-engine4 - 文件移动位置后虚幻引擎蓝图演员丢失参数
- python - 使用 OpenCV 从 Websocket 流中捕获图像
- android - Volley 错误响应字节不会从字节转换为字符串
- javascript - 将 JS 横幅添加到 WP 侧边栏