Получить группу значений индекса для количества слов более 1 - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь получить значения индекса вместе с тем, что число каждого слова в списке больше 1.

Ref="easy to get to know to easy of to"

С помощью ввода Ref у меня есть эта таблица, скажем df1

 word   Count
 easy   2
  to    4
 get    1
 know   1
  of    1

И df - это

Index   word
   0    easy
   1    to
   2    get
   3    to
   4    know
   5    to
   6    easy
   7    of
   8    to

Итак, из этих двух таблиц df и df1 я хочу получить

Index          word   count
[0,6]          easy     2
[1,3,5,8]       to      4
[2]             get     1
[4]            know     1
[7]             of      1

Будет действительно здорово, если кто-топомоги мне с этим.

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Учитывая df, как

       word
Index      
0      easy
1        to
2       get
3        to
4      know
5        to
6      easy
7        of
8        to

Сначала используйте reset_index, чтобы переместить индекс кадра данных в столбец с именем «Индекс»:

df = df.reset_index()

Далее используйте groupby с agg:

df.groupby('word')['Index'].agg([list,'count']).reset_index()

Выход:

   word          list  count
0  easy        [0, 6]      2
1   get           [2]      1
2  know           [4]      1
3    of           [7]      1
4    to  [1, 3, 5, 8]      4
0 голосов
/ 25 июня 2018

groupby + map

Вы можете группировать по word в df и затем отображать по word в df1:

s = df.groupby('word')['Index'].apply(list)
df1['Index'] = df1['word'].map(s)

print(df1)

   word  Count         Index
0  easy      2        [0, 6]
1    to      4  [1, 3, 5, 8]
2   get      1           [2]
3  know      1           [4]
4    of      1           [7]

defaultdict

В качестве альтернативы, из первых принципов, вы можете использовать collections.defaultdict для создания словаря списков, содержащих индексы.Затем введите в pd.DataFrame:

from collections import defaultdict

Ref = "easy to get to know to easy of to"

d = defaultdict(list)

for idx, word in enumerate(Ref.split()):
    d[word].append(idx)

df = pd.DataFrame({'word': list(d.keys()), 'Index': list(d.values())})
df['count'] = df['Index'].map(len)

print(df)

          Index  word  count
0        [0, 6]  easy      2
1  [1, 3, 5, 8]    to      4
2           [2]   get      1
3           [4]  know      1
4           [7]    of      1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...