繁体   English   中英

Python Pandas-检查子字符串是否包含并将新列设置为子字符串

[英]Python Pandas - check for substring containment and set new column to substring

我需要检查字符串是否包含,并将新列设置为子字符串值。 我目前正在尝试

df['NEW_COL'] = df['COL_TO_CHECK'].str.contains('|'.join(substring_list))

而不是返回布尔值true false进行遏制...我需要从substring_list返回与填充df['NEW_COL]相匹配的实际值

要检查的内容

substring_list = ['apple', 'banana', 'cherry']

结果数据帧

OLD_COL              NEW_COL
apple pie            apple
black cherry         cherry
banana lemon drop    banana

您对什么是数据以及想要什么不是很有见识,但是一般原则是可以使用:

df['NEW_COL'] = df['COL_TO_CHECK'].apply(lambda x: do_something(x) if is_something(x) else x)

或在您的示例中:

substring_list = set(['apple', 'banana', 'cherry'])
df['NEW_COL'] = df['OLD_COL'].apply(lambda x: set(x.split()).intersection(substring_list).pop())

set更快:)

我会这样:

In [148]: df
Out[148]:
             OLD_COL
0          apple pie
1       black cherry
2  banana lemon drop

In [149]: pat = '.*({}).*'.format('|'.join(substring_list))

In [150]: pat
Out[150]: '.*(apple|banana|cherry).*'

In [151]: df['NEW_COL'] = df['OLD_COL'].str.replace(pat, r'\1')

In [152]: df
Out[152]:
             OLD_COL NEW_COL
0          apple pie   apple
1       black cherry  cherry
2  banana lemon drop  banana

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM