Я хочу создать список документов. Каждый документ представляет собой комбинированные предложения из столбца «текст», когда «компания» и «дата» совпадают.
Для иллюстрации у меня есть фрейм данных:
df = pd.DataFrame(np.array([['28/02/2017', 'Apple', "A"], ['28/02/2017', 'Apple', "B"], ['30/03/2017', 'Apple', "C"],
['30/03/2017', 'Apple', "D"], ['30/02/2017', 'Amazon', "E"]]),
columns=['date', 'company', 'text'])
Мой желаемый вывод - список со следующими предложениями:
documents = ["AB", "CD", "E"]
До сих пор я думал о создании столбца "groups", который бы назначал номер группы для комбинации компании и даты. Основываясь на номере группы, я мог бы суммировать текст.
Я попытался создать функцию, которая присваивала бы эти номера групп:
def label_groups(x, count):
if x['date'] == x['company']:
return count
else:
count = count+1
df['group'] = df.apply(lambda x: label_groups(x, 0), axis=1)
Но это не работает (он возвращает «None» для каждой строки).
Возможно, это излишне сложный подход, и есть гораздо более простой способ достичь желаемого результата?