python - 将数据框与字典合并
问题描述
我在 Python 脚本中创建了一个字典 (tax_dict),我想用它在从 csv 文件上传的数据框 (tax_cols) 中创建一个新列。
数据框和字典都有名为“Tax Head”的列。
通过 pandas 导入的来自 CSV 的 DataFrame 和我在脚本中创建的字典:
税务主管 | 数量 |
---|---|
邮票 | 554354 |
海关 | 342425 |
tax_dict = {'Tax Head': ['Customs','Excise Duty','Capital Gains Tax','Stamps','Income Tax','Corporation Tax','Valued Added Tax','Training and Employment Levy','Motor Vehicle Duties','Unallocated Tax Receipts','Capital Acquisitions Tax','Local Property Tax'],
'Tax Heads Short': ['CUST','EXD','CGT','SD','IT','CORP','VAT','TEL','MOT','UNA','CAT','LPT']}
我正在尝试使用具有较短税头的合并创建另一列:
tax_dict_pd = pd.DataFrame(data=tax_dict)
tax_cols['Tax Head Short'] = tax_cols.merge(tax_dict_pd, on='Tax Head', how='left')
我认为这条简单的线会起作用,但会不断出现错误 KeyError: 'Short' & 'ValueError: Wrong number of items passed 7, placement 意味着 1'
知道我做错了什么吗?
解决方案
merge
返回一个数据框,通常您不能将数据框(超过 1 列)分配给一列。尝试:
tax_dict_pd = pd.DataFrame(data=tax_dict)
tax_cols['Tax Head Short'] = tax_cols.merge(tax_dict_pd, on='Tax Head', how='left')['Tax Head Short']
或使用map
:
tax_dict_pair = dict(**zip(tax_dict['Tax Head'], tax_dict['Tax Heads Short']))
tax_cols['Tax Head Short'] = tax_cols['Tax Head'].map(tax_dict_pair)
推荐阅读
- java - Java JSP servlet 500 错误
- c# - Selenium webdriver C#:无法识别 HTML 表单标签内的按钮元素
- angular - 如何检查Angular2中加载的元素?
- c++ - 优先队列模板推送功能
- datepicker - Vuejs2 - vue2-datepicker 中的日期格式问题
- javascript - 如何将鼠标事件附加到隐藏的 SVG 元素?
- mysql - 如何使用表中的主键属性将值插入到sql中的多值属性?
- java - Firebase 数据库,如何用数据库节点的内容填充 Spinner?
- c# - 通过 DI 在 Singleton 中调用 .NET Core Scoped
- swift - (Swift) UITableView - 尝试将索引路径移动到不存在的索引路径