Значение GroupBy в DataFrame и получение списка слов, разделенных запятой - PullRequest
0 голосов
/ 03 мая 2018

У меня есть кадр данных панд, как показано здесь. В этом кадре есть еще много столбцов, которые не важны для задачи.

id    pos      value       sente
1     a         I           21
2     b         have        21
3     b         a           21
4     a         cat         21
5     d         !           21
1     a         My          22
2     a         cat         22
3     b         is          22
4     a         cute        22
5     d         .           22

Теперь я хочу сгруппировать все строки, в которых sente = sente, и объединить слова в значении, чтобы сформировать предложение в списке. Таким образом, вывод должен выглядеть примерно так (список, полный строк разделенных запятой):

[«У меня есть кот!», «Мой кот милый».]

Полагаю, первым шагом будет использование groupby ("sente")

fill = (df.groupby("sente").apply(lambda df: df["value"].values)).reset_index().rename(columns={0: "content"})

fill = [word for word in fill["content"]

Однако при этом я получаю следующий вывод:

print(fill):

[array(['I','have','a','cat','!'],dtype=object), array(['My','cat','is','cute','.'],dtype=object)]

Есть ли способ объединить все слова в предложении, не помечая их как отдельную строку, и удалить части массива и dtype?

1 Ответ

0 голосов
/ 03 мая 2018

Вам нужно объединить все значения без последнего пробела, а затем добавить его:

L = (df.groupby("sente")['value']
       .apply(lambda x: ' '.join(x.iloc[:-1]) + x.iloc[-1])
       .tolist())
print (L)
['I have a cat!', 'My cat is cute.']

потому что еще ненужные пробелы перед ! и .:

print (df.groupby("sente")['value'].apply(' '.join).tolist())
['I have a cat !', 'My cat is cute .']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...