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
解决方案
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}
...是索引到集群标签的映射。
专业提示:不需要用空系列初始化列。
推荐阅读
- android-11 - 自动读取 OTP 在 Andorid 11 设备上不起作用
- node.js - NodeJs & mongodb - 脚本没有结束
- python - ValueError:字段“出价”需要一个数字,但得到“”
- amazon-web-services - 如何动态地将流量路由到服务的特定实例
- python - 获取公会和默认频道 ID
- rust - 为什么编译器要求我在此处添加 return 语句?
- javascript - npm Start 导致睡眠无法识别
- c - 这个 C 斐波那契程序有什么问题?
- ruby-on-rails - LoadError:无法加载此类文件 - 天蓝色
- python - 从多个模块读取和写入配置文件