删除d中的列表字符串startswith

2024-09-30 01:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有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')])

Tags: 数据字符串df列表resmgpr1th1
1条回答
网友
1楼 · 发布于 2024-09-30 01:23:16

问题是,如果不使用其他任何东西而使用.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]))

相关问题 更多 >

    热门问题