Назначьте метки сопоставления словаря индексным значениям для столбца в пандах - PullRequest
1 голос
/ 01 апреля 2019

Я хочу использовать словарь 'cluster1' для заполнения пустого pandas series, называемого Cluster.

Для справки о данных:

data.StringTogeth1
print(type(data.StringTogeth1))
print(type(data.StringTogeth1[0]))

Выход:

    0                      love dog cute think
    1                           dog look weird
    2                  think look like cupacak
    3    want snowman thank jerk grrr make mad
    4        hey know time babi shark dodododo
    5                               dog awesom

    Name: StringTogeth1, dtype: object


<class 'pandas.core.series.Series'>
<class 'str'>

Введите:

nclusters1 = 4
clusters1 = cluster_sentences(data.StringTogeth1, nclusters1)
data['Cluster'] = pd.Series()


print(clusters1)

Выход:

{1: [0, 2], 2: [1, 5], 0: [3], 3: [4]}

То есть clusters1 переводится как

{cluster number: [index from series,index from series], etc..}

Таким образом, кадр данных должен выглядеть следующим образом:

    Id  StringTogeth1                           Cluster
0   1   love dog cute think                     1
1   2   dog look weird                          2
2   3   think look like cupacak                 1
3   4   want snowman thank jerk grrr make mad   0
4   5   hey know time babi shark dodododo       3
5   6   dog awesom                              2

1 Ответ

1 голос
/ 01 апреля 2019

IIUC, вы можете сгладить и инвертировать clusters1, а затем присвоить его обратно:

df['Clusters'] = pd.Series({v: k for k, V in clusters1.items() for v in V})
df

   Id                          StringTogeth1  Clusters
0   0                    love dog cute think         1
1   1                         dog look weird         2
2   2                think look like cupacak         1
3   3  want snowman thank jerk grrr make mad         0
4   4      hey know time babi shark dodododo         3
5   5                             dog awesom         2

Где,

{v: k for k, V in clusters1.items() for v in V}
# {0: 1, 1: 2, 2: 1, 3: 0, 4: 3, 5: 2}

... - это отображение индекса в кластерlabel.

Pro-tip: инициализация столбца с пустой серией не требуется.

...