【发布时间】:2021-08-04 02:31:04
【问题描述】:
我正在尝试映射 2 个数据帧
L1
ship city code
NaN aa 12
NaN bb 23
NaN cc 13
NaN dd 43
B1
ship city
21 dd
32 bb
43 aa
654 cc
34 bb
54 aa
我想将列 code 从 L1 映射到 B1。我尝试使用字典进行映射,所以我会得到这样的结果
Expected_Result =
ship city code
21 dd 43
32 bb 23
43 aa 12
654 cc 13
34 bb 23
54 aa 12
code_dict = dict(zip(L1['city'],L1['code']))
B1['code'] = L1['city'].map(code_dict)
print(B1)
我得到的结果不是我所期望的。
请帮我解决这个问题。
ship city code
21 dd 12
32 bb 23
43 aa 13
654 cc 43
34 bb NaN
54 aa NaN
【问题讨论】:
-
L1 和 B1 没有共同的
code列?这是错字吗?你是根据城市加入这个的吗?如果是这样,那么21 dd 43似乎是正确的结果。 -
每个城市都有一个与之相关的唯一“代码”,我已将其映射到字典 - “code_dict”。将每个“城市”对应的“代码”从“L1”映射/复制到“B1”是我在这里想要实现的。
-
那么这对你有用
l1.merge(b1,on=['city'],how='inner')[['ship_y','city','code']].rename({"ship_y":"ship"},axis=1) -
我的实际数据集有更多列,如果我合并,我将不得不重命名每个重复的列。您能否建议使用字典或无需重命名列的解决方案?
标签: python dataframe dictionary mapping