python - 使用值表单字典重命名 Pandas 数据框中的列
问题描述
我有一个从 excel 文件中读取的熊猫数据框。注意:列名保持不变,但列的位置在 excel 文件中可能会有所不同。
df
colA colB colC ...
0 val11 val12 val13 ...
1 val21 val22 val23 ...
... ... ...
我有一个应该用来更改列名的字典列表,如下所示
field_map
[{"file_field" : "colA" , "table_field" : "tab1"},
{"file_field" : "colB" , "table_field" : "tab2"},
{"file_field" : "colC" , "table_field" : "tab3"},
... ... ...]
我可以通过这种方式分别转换 DataFrame 中每一行的列键,并使用new_dt
进一步操作。
file_dt = df.to_dict("records")
for each_entry in file_dt:
new_dt = {}
for field in field_map:
new_dt[field['table_field'] = each_entry[field['file_field']]
... ... ...
当我的文件很大时,此方法花费的时间太长。
我想在进一步处理条目之前更改数据框的列标题,这将为我减少很多处理时间。请帮我解决这个问题。我期待数据框是这样的
预期 df
tab1 tab2 tab3 ...
0 val11 val12 val13 ...
1 val21 val22 val23 ...
... ... ...
提前致谢
解决方案
只需rename
在现有数据框中使用该函数df
:
df = df.rename(columns={"colA":"tab1", "colB":"tab2", "colB":"tab3"})
您需要field_map
稍微修改字典:
col_rename_dict = {el["file_field"]:el["table_field"] for el in field_map}
df = df.rename(columns=col_rename_dict)
推荐阅读
- c# - 打开 OracleConnection 时出现 OutOfMemoryException
- docker - 什么是 Kubernetes StateFulSet?
- html - 在 2 个 div 之间垂直添加空间
- docker - 使用多个 docker 守护进程运行 gitlab-runner
- python - Maya Python 中的 cmds.scriptCtx 到底是做什么的?
- vhdl - 我们可以从端口映射语句写入两个信号吗?
- java - 微服务系统中服务之间的分布式事务,使用spring-cloud
- python - Python:通过 NTLM 从嵌入式 ZIP 文件安装 PIP
- bash - 在 Pushgateway (Prometheus) 上使用 Curl 对 Cron 进行故障排除
- java - JavaFX 中的可缩放滚动窗格