我有一个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
最初,我想将第一个数据帧重塑为长格式,然后与字典数据帧合并,然后重塑为宽格式。然而,我认为这是相当低效的,所以我想使用一种更有效的方法(如果存在的话)。非常感谢你的帮助。
你也可以只使用这一行:
df1.columns=[df2['val2']]
输出:
A7 B0 C3 D1
0 1 2 3 7
1 5 6 7 8
我认为您可以首先从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
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_”(与列数无关)。所以看起来应该是这样的: 我可以用循环来完成,但我希望有一个更简单的方法。