[英]How do I use dictionary keys and values to rename columns in a pandas DataFrame?
[英]Rename Columns in a Pandas Dataframe with values form dictionary
我有一个从 excel 文件中读取的 pandas 数据帧。 注意:列名保持不变,但列的 position 在 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 ...
... ... ...
提前致谢
只需在现有 dataframe df
中使用rename
function :
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)
如果你改变你的field_map
你可以简单地将它传递给df.rename
为:
field_map = {x['file_field']:x['table_field'] for x in field_map}
df = df.rename(columns=field_map)
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.