数据框1
df1 = pd.DataFrame([[1221,"aptq",[{'id': 100051}, {'id': 100050}]]], columns = ["offid","name","sub_ids"])
offid name sub_ids
0 1221 aptq [{'id': 100051}, {'id': 100050}]
数据框2
df2 = pd.DataFrame([[100051, "zonal"], [100050, "upper"],
[100056, "capital | national"]], columns=["id", "name"])
id name
0 100051 zonal
1 100050 upper
2 100056 capital | national
结果数据框
offid name sub_ids
1221 aptq [zonal, upper]
想要将Dataframe 1的sub_ids列中的值替换为DataFrame 2中的id名称,以实现类似于Result Dataframe的结果。任何帮助将不胜感激。
使用Series.explode
on sub_ids
,然后使用Series.str.get
on列从字典中sub_ids
提取与键关联的值id
,然后使用将Series.map
映射ids
到中的名称df2
,并使用Series.groupby
onlevel=0
和agg
using list
:
names = (
df1['sub_ids'].explode().str.get('id')
.map(df2.set_index('id')['name']).groupby(level=0).agg(list)
)
df = df1.assign(sub_ids=names)
结果:
print(df)
offid name sub_ids
0 1221 aptq [zonal, upper]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句