Объединить текст столбца в dataframe с условиями в pandas / python - PullRequest
1 голос
/ 24 июня 2019

Я тестирую модель ML, и мне нужно объединить текст, чтобы вырезать аудиофайл и обучить модель. Как я могу объединить текст, используя условия?

Моя цель - объединить текст в столбце «Текст», пока я не достигну конечной пунктуации, чтобы сформировать предложение. Я хочу продолжать формировать предложения, пока не достигну конца текстового файла.

Я пытался использовать группы панд.

df.groupby(['Name','Speaker','StTime','EnTime'])['Text'].apply(' '.join).reset_index()


Example:

Name  Speaker StTime    Text              EnTime
s1     tom     6.8     I would say  7.3
s1     tom     7.3                      7.6
s1     tom     7.6     leap frog    8.3
s1     tom     8.3                      9.2
s1     tom     9.2       a pig.         10.1




Name  Speaker StTime     Text                            EnTime
s1     tom     6.8     I would say leap frog a pig.       10.1

Ответы [ 2 ]

1 голос
/ 24 июня 2019

Или используйте:

>>> df['Text'] = df.groupby(['Name', 'Speaker'])['Text'].transform(' '.join).str.split().str.join(' ')
>>> df2 = df.head(1)
>>> df2['EnTime'] = df['EnTime'].iloc[-1]
>>> df2
  Name Speaker  StTime                          Text  EnTime
0   s1     tom     6.8  I would say leap frog a pig.    10.1
>>> 
0 голосов
/ 24 июня 2019

Использовать GroupBy.agg с добавленными функциями GroupBy.first и GroupBy.last, а для столбца Text использовать пользовательскую лямбда-функцию с пустой фильтрациейстрока:

df1 = (df.groupby(['Name','Speaker'], sort=False)
         .agg({'StTime':'first', 
               'Text': lambda x: ' '.join(y for y in x if y != ''),
               'EnTime':'last'})
         .reset_index())
print (df1)
  Name Speaker  StTime                          Text  EnTime
0   s1     tom     6.8  I would say leap frog a pig.    10.1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...