#python #pandas #dictionary #series
#python #pandas #словарь #Серии
Вопрос:
Я хочу использовать словарь ‘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:
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}
…это сопоставление индекса с меткой кластера.
Подсказка: инициализация столбца с пустым рядом не требуется.