Как рассчитать среднее значение tfidf-векторов по условию, если индекс находится в одном из 3 внешних списков? - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь сгруппировать tfidf-векторы (строки Pandas DataFrame), если индекс находится в одном из 3 списков, и вычислить среднее значение для сгруппированных строк.Ситуация:

list_A = [1,2,3]
list_B = [4,5]
list_C = [6]

pandas.DataFrame:
id     word1     word2     word3
1      0.01      0.00      0.00 
2      0.00      0.01      0.01
3      0.01      0.01      0.00
4      0.01      0.01      0.01
5      0.01      0.00      0.01
6      0.00      0.01      0.01

Я не могу использовать функцию pandas.DataFrame.groupby (), и теперь я немного растерялся.

1 Ответ

0 голосов
/ 03 декабря 2018

Вы можете установить новый столбец с уникальным идентификатором, проиндексировав три списка и сгруппировав по ним:

df.loc[list_A, "class"] = "A"
df.loc[list_B, "class"] = "B"
df.loc[list_C, "class"] = "C"
df
#     word1  word2  word3 class
# id                           
# 1    0.01   0.00   0.00     A
# 2    0.00   0.01   0.01     A
# 3    0.01   0.01   0.00     A
# 4    0.01   0.01   0.01     B
# 5    0.01   0.00   0.01     B
# 6    0.00   0.01   0.01     C

df.groupby("class").mean()
#           word1     word2     word3
# class                              
# A      0.006667  0.006667  0.003333
# B      0.010000  0.005000  0.010000
# C      0.000000  0.010000  0.010000

Обратите внимание, что это предполагает, что id является индексом вашего фрейма данных и чтосписки содержат значения из индекса (как в вашем примере).

...