因此,今天,我在以下情况中苦苦挣扎:我有一个字典,其中每个键是一个簇号,每个值是一个列表,该列表由与该簇相关的索引号组成:
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
除了颠倒我的字典来映射它之外,还有其他方法吗?
答案 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]})