Pandas DataFrame从列索引返回值

时间:2017-12-04 20:19:30

标签: python pandas

我有一个数据框,其中包含另一个数据帧的不同列号的值。有没有办法可以从其他数据框中返回值而不是只有列索引。

我基本上想要匹配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

2 个答案:

答案 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