2017-01-26 3 views
0

私は2つの.csvファイルAとBを持っています。Aには1,000,000行と2つの列があります。 Bは20行2列です。Python。 forループとdictsの使用:ファイルAの行:ファイルBの一致出力の取得

A:

Var1 S 
x  2 
y  1 
z  7 
x  2 
x  3 
z  4 

B:

Var1 Var2 
x  a 
y  b 
z  c 

A及びBは、3つの変数(x、y、z)を用いてカラムVAR1を有するが、Aで彼らは、彼らはこのようにユニークではないが、Bではユニークではない。 Bには3つの変数(a、b、c)を持つ追加列Var2があります。 PythonやRを使用して、私はAとBの間VAR1の試合でに新しい列VAR2を追加することによって、新しいファイルCを作成したいと思いますので、私はこのような何かを得ることができます。

C:

Var1 S Var 2 
x  2 a 
y  1 b 
z  7 c 
x  2 a 
x  3 a 
z  4 c 

私はPythonで辞書やforループを使用していましたが、成功しませんでした。私の問題は、 "for A:"を使用すると、Aからの出力情報しか得られないということです。一方、私が "Bのために"使うならば、私はBからの出力情報しか得られません。私はそれが論理的な意味を持たないことを知っていますが、私は "Aのために、Bから一致する出力情報を得ます"

重要:「マージ」操作は、「pandas」(Python)またはR(dplyr、merge)のいずれかを使用して非常に簡単に実行されることを、ユーザーのフィードバックを通じて認識しました。それは私が思ったよりも簡単でした。コード

import pandas as pd 
# create your two dataset here and perform below operation 
pd.merge(FIRST_TABLE, SECOND_TABLE, how='left', on=['Var1']) 

これが役に立てば幸い以下

+1

「マージ(A、B)」または「ライブラリ(dplyr)」を実行してください。 'R'のleft_join(A、B) ' – akrun

+1

@akrunに非常に感謝して、それは完璧に働いた! – Lucas

+0

私はこれが重複しているとは思わない。パンダは過労です – Stats4224

答えて

0

使用!

関連する問題