假设我们有像这样的数据框
100 101 102
1 0.5 0.1 0.2
2 0.3 0.4 0.5
3 0.1 0.1 0.1
和这样的表:
1 100 a
2 101 b
3 102 c
我想要的是:
a b c
1 0.5 0.1 0.2
2 0.3 0.4 0.5
3 0.1 0.1 0.1
答案 0 :(得分:3)
你的第二个DataFrame缺少列名,所以在这个答案中我称他们为x
和y
;这是我假设第二个DataFrame是:
>> df1
x y
0 100 a
1 101 b
2 102 c
此外,我假设第一个DataFrame是df0
。
您可以使用
执行此操作df0.columns = [df1[df1.x == c].y.values[0] for c in df0.columns]
说明:
df1[df1.x == c].y.values[0]
在y
列中找到与c
对应的x
列中的值。
[... for c in df0.columns]
为df0
中的所有列名称执行此操作。
df0.columns = ...
将结果指定为df0
的新列名。
答案 1 :(得分:3)
我借用@ AmiTavory假设第二帧有x
和y
列(它被轻微改变)。我们可以使用rename
方法和columns
参数:
>>> df_new = df0.rename(columns=dict(zip(df1.x, df1.y)))
>>> df_new
a b c
1 0.5 0.1 0.2
2 0.3 0.4 0.5
3 0.1 0.1 0.1
这是有效的,因为我们可以使用字典映射columns
的旧名称到新名称:
>>> dict(zip(df1.x, df1.y))
{100: 'a', 101: 'b', 102: 'c'}