我有一个数据框,其中包含另一个数据帧的不同列号的值。有没有办法可以从其他数据框中返回值而不是只有列索引。
我基本上想要匹配Push和df数据帧之间的索引。 Push数据框中的值包含我想从df数据帧返回的列。
推送数据帧:
0 1
0 1 2
1 0 3
2 0 3
3 1 3
4 0 2
df dataframe:
0 1 2 3 4
0 10 11 22 33 44
1 10 11 22 33 44
2 10 11 22 33 44
3 10 11 22 33 44
4 10 11 22 33 44
返回:
0 1
0 11 22
1 10 33
2 10 33
3 11 33
4 10 22
答案 0 :(得分:2)
您可以使用np.take
执行此操作;但是,此功能适用于展平数组。推动必须像那样转移:
In [285]: push1 = push.values+np.arange(0,25,5)[:,None]
In [229]: pd.DataFrame(df.values.take(push1))
修改强>
不,我只是重新发明np.choose
:
In [24]: df
Out[24]:
0 1 2 3 4
0 0 1 2 3 4
1 10 11 12 13 14
2 20 21 22 23 24
3 30 31 32 33 34
4 40 41 42 43 44
In [25]: push
Out[25]:
0 1
0 1 2
1 0 3
2 0 3
3 1 3
4 0 2
In [27]: np.choose(push.T,df).T
Out[27]:
0 1
0 1 2
1 10 13
2 20 23
3 31 33
4 40 42
答案 1 :(得分:0)
我们使用melt
然后replace
通知(df1是你的推,df2是你的df)
df1.astype(str).replace(df2.melt().drop_duplicates().set_index('variable').value.to_dict())
Out[31]:
0 1
0 11 22
1 10 33
2 10 33
3 11 33
4 10 22