Python: Создать новый столбец с условием и «содержит» -Состояние

Вопрос: Я хочу создать новый столбец строки с условием. Пример: from pandas import DataFrame GoT = {'Old_Group': ['Jon Snow', 'Sansa Stark','Arya Stark','Robb Stark','Theon Greyjoy' ]} df = DataFrame(GoT,columns=['Old_Group']) "New_Group" должна проверить, содержит ли "Old_Group" строку "Stark" в любом месте, и назначить ее, например, "Stark Family". Если условие "содержит = 'Старк'" не подходит, тогда "новая_группа" должна

Вопрос:

Я хочу создать новый столбец строки с условием. Пример:

from pandas import DataFrame GoT = {‘Old_Group’: [‘Jon Snow’, ‘Sansa Stark’,’Arya Stark’,’Robb Stark’,’Theon Greyjoy’ ]} df = DataFrame(GoT,columns=[‘Old_Group’])

“New_Group” должна проверить, содержит ли “Old_Group” строку “Stark” в любом месте, и назначить ее, например, “Stark Family”. Если условие “содержит = ‘Старк’” не подходит, тогда “новая_группа” должна быть назначена, например, “другим”

В SQL я бы сделал это так:

Select Old_Group ,case when Old_Group like ‘%Stark%’ then ‘Stark Family’ else ‘other’ end as New_Group from df

Спасибо

Лучший ответ:

Тебе нужно:

df[‘New_Group’] = df[‘Old_Group’].apply(lambda x : ‘Stark Family’ if ‘Stark’ in x else ‘other’) print(df)

Выход

Old_Group New_Group 0 Jon Snow other 1 Sansa Stark Stark Family 2 Arya Stark Stark Family 3 Robb Stark Stark Family 4 Theon Greyjoy other Ответ №1

Для этого вы можете использовать комбинацию np.where и str.contains. По сути, вы не можете применить np.where к соответствующему столбцу (в данном случае к старой группе) и проверить, содержит ли строка работу Stark.

df[‘New Group’] = np.where(df[‘Old Group’].str.contains(«Stark»), ‘Stark Family’, ‘Other’)

Просто убедитесь, что ваш столбец New Group является строковым типом данных, и вы импортировали numpy как пакет

Ответ №2

В случае, если имя Stark появляется в имени, подобном MacStark, эта опция не будет указана. Также он нечувствителен к регистру

df.assign(New_Column=df.replace({r'(?i)^((?!bStarkb).)*$’:’Other’,r'(?i)bStarkb’:’Stark Family’},regex=True)) Out[319]: Old_Group New_Column 0 Jon Snow Other 1 Sansa Stark Sansa Stark Family 2 Arya Stark Arya Stark Family 3 Robb Stark Robb Stark Family 4 Theon Greyjoy Other Ответ №3

Спасибо большое, Акшай. Это сработало перфект!

Оцените статью
Добавить комментарий