2017-12-04 30 views
2

私は別のデータフレームの異なる列番号の値を持つデータフレームを持っています。列インデックスを持たずに他のデータフレームから値を返すことができる方法はありますか?Pandas DataFrame列インデックスの戻り値

基本的には、プッシュフレームとdfデータフレームの間のインデックスを一致させたいと考えています。プッシュデータフレーム内の値には、dfデータフレームから返すカラムが含まれます。

プッシュデータフレーム:

0 1 
0 1 2 
1 0 3 
2 0 3 
3 1 3 
4 0 2 

DFのデータフレーム:

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つのデータフレームは互いにどのように関係していますか? – Alam

答えて

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 
2

np.takeとすることができます。ただし、この機能はフラット化された配列で機能します。

In [285]: push1 = push.values+np.arange(0,25,5)[:,None] 
In [229]: pd.DataFrame(df.values.take(push1)) 

EDIT

いいえ、私はちょうど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 
+0

いいね、新しいことを学ぶ、 – Wen

+1

これは、行が等しいためにのみ動作します:(;調整する必要があります。 –

関連する問題