#python-3.x #pandas #string #dataframe #substring
Вопрос:
привет, у меня есть образец фрейма данных, как показано ниже
col
0 [This is a sample, I have a string]
1 [sample question, strings are immutable]
2 [cool weather, It is hot]
используя регулярное выражение , я хочу выяснить, присутствует ли «образец» или «строка» в предложении, если присутствует, возвращает весь текст в новом столбце, если не возвращает ничего в новый столбец.
col Text
0 [This is a sample, I have a string] [This is a sample, I have a string]
1 [sample question, strings are immutable] [sample question, strings are immutable]
2 [cool weather, It is hot] None
Не могли бы вы помочь мне найти правильное решение для этого?
Комментарии:
1. Привет! Ваш вопрос решен? если это так, то попробуйте рассмотреть возможность принятия , чтобы сообщить другим, что проблема решена. Если нет, вы можете предоставить обратную связь, чтобы ответ можно было улучшить (или вообще удалить).
Ответ №1:
Попробуйте через contains()
:
m=df['col'].str.contains('sample|string')
df.loc[m,'Text']=df.loc[m,'col']
или
Если значения внутри столбцов ‘col’ имеют тип list, то вы можете использовать:
m=df['col'].map(lambda x:any(y for y in x for z in ['sample','string'] if z in y))
df.loc[m,'Text']=df.loc[m,'col']
#OR
m=df['col'].astype(str).str.contains('sample|string')
df.loc[m,'Text']=df.loc[m,'col']
выход из df
:
col Text
0 [This is a sample, I have a string] [This is a sample, I have a string]
1 [sample question, strings are immutable] [sample question, strings are immutable]
2 [cool weather, It is hot] NaN
Комментарии:
1. Спасибо за усилия..любые другие способы без использования «содержит» или «любой» @Anurag Dabas
2. @Cherry Я не думаю, что есть другой способ
3. @Cherry эти 2 простых метода