Pandas фильтр данных в n последовательных строках после определенного значения столбца - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть pandas кадр данных, подобный этому:

       Sentence #           Word     Tag
0     Sentence: 1           This       O
1             NaN             is       O
2             NaN              a       x
3             NaN           test       O
4     Sentence: 2           This       O
5             NaN             is       x
6             NaN        another       x
7             NaN           test       O
...

Я бы хотел сгруппировать его по предложению, например, return:

[['This is a test'], ['This is another test'], ...]

А также получить список всех слова, помеченные 'x' для каждого предложения, например:

[['a'], ['is', 'another'], ...]

Я пытался найти способы сделать это безуспешно, используя group (). Как лучше всего это решить? Спасибо

1 Ответ

0 голосов
/ 24 февраля 2020

Решено! Я использовал:

df = df.fillna(method='ffill')

для распространения ненулевых значений вперед. Затем я вычислил предложения с помощью:

df1 = df.groupby('Sentence #')['Word'].apply(lambda x: ' '.join(x))

Чтобы получить помеченные слова:

df2 = df.groupby('Sentence #', as_index=False).apply(lambda g: g[g['Tag'] == 'x'])
df2 = df2.groupby('Sentence #')['Word'].apply(lambda x: ','.join(x))

Не уверен, что это наиболее эффективное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...