如何将具有索引列表的字典映射到新变量

时间:2019-04-03 19:59:33

标签: python pandas dictionary

因此,今天,我在以下情况中苦苦挣扎:我有一个字典,其中每个键是一个簇号,每个值是一个列表,该列表由与该簇相关的索引号组成:

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

除了颠倒我的字典来映射它之外,还有其他方法吗?

1 个答案:

答案 0 :(得分: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]})