использование регулярных выражений для сопоставления шаблонов из одного столбца и создание нового столбца на основе имен атрибутов столбца - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть Pandas DataFrame формы:

Текущий

product_typ

[Milo, Milk, Sugar]
[Water, Tea, Milo]
[Bread, Water]
[Bread, Water, Milo]
[Salt, Water, Milo]
[Milo, Milk, Water, Bread]
[Salt, Milk, Bread]
[Milo, Milk]

Я хотел бы создать новый столбец с регулярным выражением формы. Имейте в виду, что это Pandas DataFrame

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

product_typ                          matched_col

[Milo, Milk, Sugar]                Product_Milo_Milk_Sugar
[Water, Tea, Milo]                 Product_Water_Tea_Milo
[Bread, Water]                     Product_Bread_Water
[Bread, Water, Milo]               Product_Bread_Water_Milo
[Salt, Water, Milo]                Product_Salt_Water_Milo
[Milo, Milk, Water, Bread]         Product_Milo_Milk_Water_Bread
[Salt, Milk, Bread]                Product_Salt_Milk_Bread
[Milo, Milk]                       Product_Milo_Milk

Я пытался сделать это с str.findall matching, pattern работает но замена заставила меня задуматься.

1 Ответ

2 голосов
/ 20 апреля 2020

Как это может быть:

df['matched_col'] = ['_'.join(map(str, l)) for l in df['product_typ']]

ИЛИ

In [1687]: df['matched_col'] = df['product_typ'].apply('_'.join)

Пример:

In [1681]: df = pd.DataFrame({'A': [['a','b','c'], ['b','c']]})                                                                                                                                             

In [1682]: df                                                                                                                                                                                               
Out[1682]: 
           A
0  [a, b, c]
1     [b, c]

In [1684]: df['b'] = ['_'.join(map(str, l)) for l in df['A']]                                                                                                                                               

In [1685]: df                                                                                                                                                                                               
Out[1685]: 
           A      b
0  [a, b, c]  a_b_c
1     [b, c]    b_c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...