Как мне сделать ключевое слово shuffle на пандах - PullRequest
0 голосов
/ 28 января 2019

Я хочу сделать более длинный ключ расширения, который bale cale означает то же самое с cale bale, все ключевые слова в строке

Вот мой набор данных

Keyword         Category_1 Category_2 Category_3
ale bale cale   bale       cale       cale
bale cale       cale       cale       ale

Вот что я хочу

Keyword         Category_1 Category_2 Category_3
ale bale cale   bale       cale       cale
ale cale bale   bale       cale       cale
bale ale cale   bale       cale       cale
bale cale ale   bale       cale       cale
cale ale bale   bale       cale       cale
cale bale ale   bale       cale       cale
bale cale       cale       cale       ale
cale bale       cale       cale       ale

1 Ответ

0 голосов
/ 28 января 2019

Используйте itertools.permutations с разделенными значениями и пониманием списка сглаживания, затем объединяйте значения вместе пробелом и добавляйте значение индекса к помощнику DataFrame - df1.Последний join оригинальный DataFrame:

from itertools import permutations

L = [(' '.join(y), k) for k, v in df['Keyword'].items() for y in permutations(v.split())]
df1 = pd.DataFrame(L, columns=['Keyword','idx']).set_index('idx')
print (df1)
           Keyword
idx               
0    ale bale cale
0    ale cale bale
0    bale ale cale
0    bale cale ale
0    cale ale bale
0    cale bale ale
1        bale cale
1        cale bale

Другое решение для df1:

vals, idx = list(zip(*L))
df1 = pd.DataFrame({'Keyword':vals}, index=idx).rename_axis('idx')

df = df1.join(df.drop('Keyword',axis=1), on='idx').reset_index(drop=True)
print (df)
         Keyword Category_1 Category_2 Category_3
0  ale bale cale       bale       cale       cale
1  ale cale bale       bale       cale       cale
2  bale ale cale       bale       cale       cale
3  bale cale ale       bale       cale       cale
4  cale ale bale       bale       cale       cale
5  cale bale ale       bale       cale       cale
6      bale cale       cale       cale        ale
7      cale bale       cale       cale        ale
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...