Применить условие для столбца данных pandas - PullRequest
1 голос
/ 16 апреля 2020

например: у меня есть фрейм данных с 2 столбцами, и я хочу добавить 4-й столбец при условии.

1stcolumn  2ndcolumn 
abc.       aaa-eee
abc.       abc-def
abc.       ccc-eee
abc.       c-ee-f-g
abc.       a
abc.       eee-eee
abc.       bbb-ddd

Условие: если значение в 3-м столбце равно [any value in a_list]-[any value in b_list], то значение в столбце 4 должно быть controlled" else "not controlled

a_list = ['aaa','bbb','ccc'] 
b_list = ['ddd','eee']

ожидаемый результат:

1stcolumn  2ndcolumn.   3rdcolumn 
abc.       aaa-eee.     controlled
abc.       abc-def.     not controlled
abc.       ccc-eee.     controlled
abc.       c-ee-f-g.    not controlled
abc.       a.           not controlled
abc.       eee-eee.     not controlled
abc.       bbb-ddd.     controlled

1 Ответ

0 голосов
/ 16 апреля 2020

Создать все комбинации значений с помощью itertools.product, проверить столбец с помощью Series.isin и установить новые значения с помощью numpy.where:

from  itertools import product

a_list = ['aaa','bbb','ccc'] 
b_list = ['ddd','eee']
new = [f'{a}-{b}' for a, b in product(a_list, b_list)]
print (new)
['aaa-ddd', 'aaa-eee', 'bbb-ddd', 'bbb-eee', 'ccc-ddd', 'ccc-eee']

df['3rdcolumn'] = np.where(df['2ndcolumn'].isin(new),'controlled','not controlled')
print (df)
  1stcolumn 2ndcolumn      3rdcolumn 
0      abc.   aaa-eee      controlled
1      abc.   abc-def  not controlled
2      abc.   ccc-eee      controlled
3      abc.  c-ee-f-g  not controlled
4      abc.         a  not controlled
5      abc.   eee-eee  not controlled
6      abc.   bbb-ddd      controlled
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...