Pandas - извлечение указанного c текста после общего слова - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть некоторые данные о продажах, в которых есть данные клиентов. Все покупки, сделанные клиентом, хранятся в одной строке, как показано ниже. Я пытаюсь создать новый столбец, в котором все продукты, приобретенные каждым покупателем, перечислены в одной строке, разделенной запятой

id, value
101, day:day_1\nproducts:abc\nday:day_2\nproducts:xyz\nday:day_3\nproducts:def
102, day:day_1\nproducts:prod_1\nday:day_4\nproducts:prod_2
103, \n

. Пытается преобразовать вышеуказанные данные в следующий формат:

* 1005. *

1 Ответ

2 голосов
/ 06 февраля 2020

Если возможно, используйте Series.str.findall с Series.str.join:

df['value'] = df['value'].str.findall('products:(.+)').str.join(',')
print (df)
    id          value
0  101    abc,xyz,def
1  102  prod_1,prod_2
2  103               

Или решение с split в понимании списка:

L = [','.join(y.split(":")[1] for y in v.split("\n") if ('products' in y))
     if pd.notna(v) and (':' in v) and ('\n' in v) 
     else ''
     for v in df['value']]

df1 = df[['id']].join(pd.DataFrame(L, index=df.index, columns=['value']))
print (df1)
    id          value
0  101    abc,xyz,def
1  102  prod_1,prod_2
2  103            
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...