Python 当键的值在另一列中时,将字典的键放在DataFrame的列中

Python 当键的值在另一列中时,将字典的键放在DataFrame的列中,python,pandas,dataframe,dictionary,Python,Pandas,Dataframe,Dictionary,这是数据帧: d_vals ={'vals': [i for i in range(1, 6)]} df = pd.DataFrame(d_vals) df vals 0 1 1 2 2 3 3 4 4 5 这是词典: d_groups = { 'a': [1, 2], 'b': [3, 5], 'c': [4] } 要点是当列vals的值在键的值中时,使用字典的键获取一个新列groups 最后的数据帧应如下所示: vals

这是数据帧:

d_vals ={'vals': [i for i in range(1, 6)]}
df = pd.DataFrame(d_vals)
df

    vals
0   1
1   2
2   3
3   4
4   5
这是
词典

d_groups = {
    'a': [1, 2],
    'b': [3, 5],
    'c': [4]
}
要点是当列
vals
的值在键的值中时,使用
字典的键获取一个新列
groups

最后的数据帧应如下所示:

    vals    groups
0   1       a
1   2       a
2   3       b
3   4       c
4   5       b
与展平字典一起使用以创建新字典:

#swap key values in dict
#http://stackoverflow.com/a/31674731/2901002
d = {k: oldk for oldk, oldv in d_groups.items() for k in oldv}

df['groups'] = df['vals'].map(d)
print (df)
   vals groups
0     1      a
1     2      a
2     3      b
3     4      c
4     5      b