Панды создают новый столбец, проверяя список

1

У меня есть фрейм данных с 4 столбцами A, B, C, D и List.i мне нужно создать столбцы, используя столбцы B, C, D и список, как показано в разделе вывода ниже.

hier_List= [[pages2 , book1  , paper3] , [pen1 , rifle2 , ink3] , [words1 ,book2, ink3]]

Столбец должен быть создан с использованием приведенных выше списков.

dataframe:

A      B       C        D      
C_1     1971   book1    nan    
C_1     1971   pages2   pages2  
C_1     1970   book1    nan     
C_1     1972   book1    nan    
C_1     1973   letters4 nan    

выход:

Для каждой строки я должен проверить, присутствует ли значение столбца C в каком-либо из подсписков в hier_list. Если флаг присутствует, то да, иначе нет.

 A      B       C        D       is_present_any_list
C_1     1971   book1    nan        yes  
C_1     1971   pages2   pages2     yes 
C_1     1970   book1    nan        yes  
C_1     1972   book1    nan        yes  
C_1     1973   letters4 nan        no   

Я не могу понять, как это сделать, пожалуйста, помогите мне в этом и дайте мне знать, если вам нужны дополнительные разъяснения.

Теги:
pandas
numpy
pandas-groupby
pivot

1 ответ

0

Используйте numpy.where с isin и numpy.concatenate вложенный список с помощью numpy.concatenate:

df['is_present_any_list'] = np.where(df['C'].isin(np.concatenate(hier_List)), 'yes', 'no')
print (df)
     A     B         C       D is_present_any_list
0  C_1  1971     book1     NaN                 yes
1  C_1  1971    pages2  pages2                 yes
2  C_1  1970     book1     NaN                 yes
3  C_1  1972     book1     NaN                 yes
4  C_1  1973  letters4     NaN                  no

Ещё вопросы

Сообщество Overcoder
Наверх
Меню