我有以下数据框:
ID Unique_value
red_1 0
red_2 1
blue_1 1
blue_2 2
blue_3 2
blue_4 3
blue_4 1
有两个字典用于映射红色和蓝色 ID:
red_dict = {0: "A", 1: "B", 2: "C"}
blue_dict = {0: "D", 1: "B", 2: "E", 3: "F"}
期望的输出是:
ID Unique_value
red_1 A
red_2 B
blue_1 B
blue_2 E
blue_3 E
blue_4 F
blue_4 B
到目前为止我所做的:
groupby.apply
:
mapper = {'red': {0: "A", 1: "B", 2: "C"},
'blue': {0: "D", 1: "B", 2: "E", 3: "F"}}
df['Unique_value'] = (df.groupby(df['ID'].str.extract('([^_]+)', expand=False),
group_keys=False)['Unique_value']
.apply(lambda g: g.map(mapper.get(g.name, {})))
)
输出:
ID Unique_value
0 red_1 A
1 red_2 B
2 blue_1 B
3 blue_2 E
4 blue_3 E
5 blue_4 F
6 blue_4 B