我在数据框中有一个带有传感器标识符和变化值的列。我有另一个数据框,其中包含传感器名称的简单英语描述。看起来像这样:
Date zz8029 df456sz
2017-01-01 1 2
... . .
... . .
第二个密码框架如下:
name description
zz8029 ROOM201-TEMP
是否可以使用密码第二个数据帧以编程方式重命名第一个数据帧中的所有列?有数百个传感器名称,因此手动重命名它们不会做到。结果看起来像这样
Date ROOM201-TEMP ROOM200-TEMP
2017-01-01 1 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)