当前位置: 首页 > 知识库问答 >
问题:

根据字典重命名PANDAS中的列

冯飞鹏
2023-03-14

我有一个dataframe,我想根据另一个我计划用作字典的dataframe重命名这些列。例如,我的第一个数据帧是:

          AAA   BBB   CCC   DDD
 index   
  1       1     2     3     4
  2       5     6     7     8

作为我想用作字典的第二个数据帧:

           val1    val2
  index
    1      AAA      A7
    2      BBB      B0
    3      CCC      C3
    4      DDD      D1

我希望得到的结果如下:

          A7    B0    C3    D1 
 index   
  1       1     2     3     4
  2       5     6     7     8

最初,我想将第一个数据帧重塑为长格式,然后与字典数据帧合并,然后重塑为宽格式。然而,我认为这是相当低效的,所以我想使用一种更有效的方法(如果存在的话)。非常感谢你的帮助。

共有3个答案

宫子晋
2023-03-14

你也可以只使用这一行:

df1.columns=[df2['val2']]

输出:

    A7  B0  C3  D1
0   1   2   3   7
1   5   6   7   8
太叔富
2023-03-14

我认为您可以首先从df2创建字典,然后通过df1的列创建Series,然后使用字典映射

print df1
       AAA  BBB  CCC  DDD
index                    
1        1    2    3    4
2        5    6    7    8

print df2
      val1 val2
index          
1      AAA   A7
2      BBB   B0
3      CCC   C3
4      DDD   D1

d = df2.set_index('val1').to_dict()
print d['val2']
{'AAA': 'A7', 'BBB': 'B0', 'CCC': 'C3', 'DDD': 'D1'}

df1.columns = df1.columns.to_series().map(d['val2'])
print df1
       A7  B0  C3  D1
index                
1       1   2   3   4
2       5   6   7   8

许天逸
2023-03-14

df.rename有一个名为的参数,它接受字典:

df.rename(columns=dict(zip(df2["val1"], df2["val2"])))

出:

    A7  B0  C3  D1
0   1   2   3   4
1   5   6   7   8

它返回一个新的DataFrame。您可以使用inplace=True,也可以将其分配回原始DataFrame。

 类似资料:
  • 问题内容: 我有一个数据框,我想根据另一个计划用作字典的数据框重命名列。例如,我拥有的第一个数据框是: 作为第二个数据框,我想用作字典: 我想得到的结果如下: 最初,我想将第一个数据框重塑为长格式,然后与字典数据框合并,然后重塑为宽格式。但是我认为这效率很低,因此我想使用一种更有效的方法(如果存在)。非常感谢您的帮助。 问题答案: 我觉得你可以先创建从,然后创建从列由您再使用:

  • 问题内容: 有没有一种方法可以重命名字典键,而无需将其值重新分配给新名称并删除旧名称键;而且没有迭代字典键/值? 对于OrderedDict,在保持键的位置的同时执行相同的操作。 问题答案: 对于常规命令,可以使用: 对于OrderedDict,我认为你必须使用一种理解来构建一个全新的。 正如这个问题似乎提出的那样,修改密钥本身是不切实际的,因为dict密钥通常是不可变的对象,例如数字,字符串或元

  • 问题内容: 这个问题已经在这里有了答案 : 使用pandas GroupBy.agg()对同一列进行多次聚合 (3个答案) 去年关闭。 示例数据集: 我想通过和对这个数据集的观察进行分组,并对每个组求和。所以我用了这样的东西… 在使用时,我能够获得“ SQL-like”输出。我的问题是我无法在此处 重命名聚合变量。因此,在SQL中,如果想做上述事情,我会做这样的事情: 正如我们看到的,它很容易让我

  • 问题内容: 我有一个使用pandas和列标签的,我需要对其进行编辑以替换原始列标签。 我想在原始列名称为的 中更改列名称: 至 我已经将编辑后的列名存储在列表中,但是我不知道如何替换列名。 问题答案: 只需将其分配给属性:

  • 我在这里查看了rename函数,但是,它似乎没有考虑到将多个列关联到一个要重命名的关键字的可能性。 这在熊猫体内是可行的吗? 到目前为止,我的(未工作的)尝试如下: DF示例: 预期结果:

  • 我有一个dataframe(由于我无法控制的原因),其中变量的数量从1到20不等,所有变量都命名为1,2,3,4,5....ETC 一天有四列: 在每个列名前缀“variable_”(与列数无关)。所以看起来应该是这样的: 我可以用循环来完成,但我希望有一个更简单的方法。