发布于2024-11-26 22:19 阅读(565) 评论(0) 点赞(17) 收藏(5)
我有两个数据框 df1 和 df2(df1 的行数明显更多)。第一个数据框由五列组成:第 1 列 - 包含邮政编码,第 2 列至第 5 列 - 包含特定代码。第二个数据框由两列组成:第 1 列 - 原始代码,第 2 列 - 新代码。想法是从第一个数据框的第 2 列中获取代码,New Code
根据列中的匹配在第二个数据框中搜索相应的代码Code
,然后用第二个数据框中的新代码替换第一个数据框的第 2 列中的值:
Postcode Column 2 Column 3 Column 4 Column 5
BS105JJ 1 3 0 1
BS105JL 0 0 0 1
BS105JN 1 2 0 1
BS105JP 0 0 0 1
BS105JR 1 1 0 1
BS105JS 0 0 0 1
BS105JT 1 5 0 1
Code Code New
0 1
1 3
2 5
3 7
4 9
5 3
Expected result:
Postcode Column 2 Column 3 Column 4 Column 5
BS105JJ 3 3 0 1
BS105JL 1 0 0 1
BS105JN 3 2 0 1
BS105JP 1 0 0 1
BS105JR 3 1 0 1
BS105JS 1 0 0 1
BS105JT 3 5 0 1
我尝试过浏览解决方案,但到目前为止只找到了查找相等数据框的方法。在理想情况下,我希望找到具有可重复使用函数的解决方案(每列都需要使用不同的数据框执行此查找),但即使只显示方法 - 也没关系,我会自己弄清楚如何将其放入函数中。
我认为您正在寻找地图。
import pandas as pd
code = pd.DataFrame({'Code': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5}, 'Code New': {0: 1, 1: 3, 2: 5, 3: 7, 4: 9, 5: 3}})
df = pd.DataFrame({'Postcode': {0: 'BS105JJ', 1: 'BS105JL', 2: 'BS105JN', 3: 'BS105JP', 4: 'BS105JR', 5: 'BS105JS', 6: 'BS105JT'}, 'Column 2': {0: 1, 1: 0, 2: 1, 3: 0, 4: 1, 5: 0, 6: 1}, 'Column 3': {0: 3, 1: 0, 2: 2, 3: 0, 4: 1, 5: 0, 6: 5}, 'Column 4': {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0}, 'Column 5': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1}})
df['Column 2'] = df['Column 2'].map(code.set_index('Code')['Code New'])
print(df)
# output
# Postcode Column 2 Column 3 Column 4 Column 5
# 0 BS105JJ 3 3 0 1
# 1 BS105JL 1 0 0 1
# 2 BS105JN 3 2 0 1
# 3 BS105JP 1 0 0 1
# 4 BS105JR 3 1 0 1
# 5 BS105JS 1 0 0 1
# 6 BS105JT 3 5 0 1
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/2046119/ee7780abe165cd3eb525/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!