Все возможные комбинации столбцов в кадре данных в зависимости от значения в другом столбце - PullRequest
0 голосов
/ 14 мая 2018

Мой df выглядит так:

sent  token  token2
1     word1  word1
1     word2  word2
1     word3  word3
1     word4  word4
1     word5  word5
2     word6  word6

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

[1, word1, word2, n]
[1, word1, word3, n]
[1, word1, word4, n]
[1, word1, word5, n]
[1, word2, word3, n]
...

Я пытался использовать конструкции itertools и crosstab, но не могу понять, как добавить к ним условие.

1 Ответ

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

Вы можете использовать merge здесь, затем отсортировать значение, удалить дубликаты с помощью np.sort и drop_duplicates

s=df.loc[:,['sent','token2']].merge(df.loc[:,['sent','token']],on='sent')
s[['token','token2']]=np.sort(s[['token','token2']],1)
s=s.loc[s.token2!=s.token].drop_duplicates()
s.head()

Out[213]: 
   sent token2  token
1     1  word2  word1
2     1  word3  word1
3     1  word4  word1
4     1  word5  word1
7     1  word3  word2
...