基于密码的熊猫重命名列

时间:2018-07-25 21:18:34

标签: python pandas dataframe rename

我在数据框中有一个带有传感器标识符和变化值的列。我有另一个数据框,其中包含传感器名称的简单英语描述。看起来像这样:

Date          zz8029    df456sz
2017-01-01    1            2
...           .            .
...           .            .

第二个密码框架如下:

name     description
zz8029   ROOM201-TEMP

是否可以使用密码第二个数据帧以编程方式重命名第一个数据帧中的所有列?有数百个传感器名称,因此手动重命名它们不会做到。结果看起来像这样

Date          ROOM201-TEMP    ROOM200-TEMP
2017-01-01    1                2
...           .                .
...           .                .

2 个答案:

答案 0 :(得分:1)

使用map,其中arg是具有“来自值”的索引的序列,而值是映射到的值:

df = df.set_index('Date')
df.columns = df.columns.map(df2.set_index('name')['description'])
df = df.reset_index()
df

输出:

         Date  ROOM201-TEMP  ROOM200-TEMP
0  2017-01-01             1             2

答案 1 :(得分:1)

有一个很好的旧pd.map。它用于系列,但我认为有可能使其适用于列名

 z = {k: g.description.values[0] for k, g in df2.groupby('name')}
 df.columns = df.columns.map(z)