1

这是DataFrame

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

这是dictionary

d_groups = {
    'a': [1, 2],
    'b': [3, 5],
    'c': [4]
}

groups关键是dictionary当列的值在键的值中时,使用键的键获取一个新列vals

最终DataFrame应该是这样的:

    vals    groups
0   1       a
1   2       a
2   3       b
3   4       c
4   5       b
4

1 回答 1

2

使用Series.map扁平化字典到新字典:

#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
于 2020-05-27T08:58:26.037 回答