python - 如何使用字典重命名列?
问题描述
我有几个 pandas DataFrame,我想对齐它们的列名,以便它们都具有特定列(不是所有列)的相同名称。
在我的真实数据集中,我有很多列,但下面我提供了 3 个 DataFrame 的简化示例。它们都具有相同的内容,但这样做是为了简化示例。
df1 =
col1 col2 col3
111 123 abc
122 331 zzz
df2 =
colA colB col3
111 123 abc
122 331 zzz
df3 =
col_1 col_2 col3
111 123 abc
122 331 zzz
然后我有以下字典,它指定了类似的列(实际上字典更大):
col_names = {
"col1": ["colA", "col_1"],
"col2": ["colB", "col_2"]
}
这意味着列colA
和col_1
应该重命名为col1
,列colB
和col_2
应该重命名为col2
。
我知道如何在 pandas DataFrame 中一一重命名列:
df.rename(columns={"colA": "col1"}, inplace=True)
但是,我很困惑如何使用字典灵活地重命名列?
解决方案
df1.rename(columns={col_names[key][0]: key for key in col_names}, inplace=True)
df2.rename(columns={col_names[key][1]: key for key in col_names}, inplace=True)
如果字典中值的顺序是随机的,并且如果您不确定数据框中的列,那么您可以使用。
df1 = pd.DataFrame({'col1': [1]*3, 'col2': [2]*3, 'col3': [3]*3})
df2 = pd.DataFrame({'colA': [11]*3, 'colB': [22]*3, 'col3': [33]*3})
df3 = pd.DataFrame({'col_1': ['a']*3, 'col_2': ['b']*3, 'col3': ['c']*3})
col_names = {
"col1": ["colA", "col_1"],
"col2": ["colB", "col_2"]
}
cols = {}
for key,value in col_names.items():
for v in value:
cols[v] = key
for df in [df1,df2,df3]:
df.rename(columns=cols, inplace=True)
推荐阅读
- python - Python Dataframe - 在除第一次出现的日期外删除重复的 TRUE
- bash - Shell 脚本 - 基于“时间戳”属性对“AWS cloudwatch 指标”json 数组进行排序,原始输出包括统计信息
- r - 从 R 中的列中删除字符串
- python - Alnum + 空间?Python
- javascript - Bootstrap flex 不会在打印时显示所有 svg
- android - ActivityNotFound 异常
- javascript - 在 Google Apps 中使用 HtmlService 表单上传文件总是会导致“服务器错误”和堆栈跟踪
- r - R函数选择2个具有相似文件名的文件
- html - HTML如何在标题下制作水平导航栏
- mongodb - 创建嵌套模型的最佳实践是什么