如何将带有索引列表的dict映射到新变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将带有索引列表的dict映射到新变量相关的知识,希望对你有一定的参考价值。

所以,今天我正在努力解决以下问题:我有一个字典,其中每个键都是一个簇号,每个值都是一个由与该簇相关的索引号组成的列表:

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

我的DataFrame看起来像这样:

index    col
 0       foo
 1       foo
 2       foo
 3       foo
 4       foo
 5       foo

我认为以下内容可行:

df['cluster']=df.index.map(dic)

但它映射到键而不是值,带来以下内容:

index    col   cluster
 0       foo   [0,1,2]
 1       foo   [3,4,5]
 2       foo     nan
 3       foo     nan
 4       foo     nan
 5       foo     nan

而我想要的是:

index    col   cluster
 0       foo     0
 1       foo     0
 2       foo     0
 3       foo     1
 4       foo     1
 5       foo     1

有没有其他方法可以反转我的字典来映射这个?

答案

检查你的dict

df.index.map({y : x[0] for x in dic.items() for y in x[1]})
Out[379]: Index(['0', '0', '0', '1', '1', '1'], dtype='object')
#df['cluster']=df.index.map({y : x[0] for x in dic.items() for y in x[1]})

以上是关于如何将带有索引列表的dict映射到新变量的主要内容,如果未能解决你的问题,请参考以下文章

一旦单击带有 in 片段的回收器列表项,如何将片段意向活动,以及如何获取回收器项目值?

如何将列表值映射到新对象属性

如何从包含Python3中特定索引和列的列表的dict创建Pandas DataFrame?

如何在Python中将dict元素值作为列表

映射 dict(来自 rdd)以递归方式更改 Python/PySpark 中的列名

将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener