我有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]))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句