2017-12-14 6 views
2

2つのCSVファイルを「マージ」したい。私は、ファイル1からのメールをマッピングし、その後、私は、ファイルのそれぞれのメールにそれを割り当てたいファイル2から、それぞれのuserIdを取得したい1Python pandas CSVファイルをマップする

例:

ファイル1

name, userId, email 
john, null, [email protected] 
alex, null, [email protected] 
micheal, null, [email protected] 
alex, null, [email protected] 
john, null, [email protected] 

ファイル2

name, userId, email 
alex, 5, [email protected] 
micheal, 10, [email protected] 
john, 12, [email protected] 

出力ファイル

name, userId, email 
john, 12, [email protected] 
alex, 5, [email protected] 
micheal, 10, [email protected] 
alex, 5, [email protected] 
john, 12, [email protected] 

これは私のコードですが、電子メールは

import pandas as pd 

df1 = pd.read_csv("file1.csv", sep=",") 
df2 = pd.read_csv("file2.csv", sep=",", index_col=0) 

df1["userId"] = df2["userId"].values 

df1.to_csv("output.csv", sep=";") 
を命じていないので、これは、それぞれの電子メールのuserIdを割り当てられません誰もが私を助けることができますか?

+0

Dataframe.joinは、あなたが探しているものです:私は得ることはありませんhttp://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.join.html – HSchmachty

答えて

1

Dataframe.merge

df1 = pd.read_csv("file1.csv", sep=",") 
df1.columns = ['name', 'userid', 'email'] 
df2 = pd.read_csv("file2.csv", sep=",", index_col=0) 
df1 = df1.drop(['userId'], axis=1) 

result = pd.merge(df1, df2, on=['name','email'], how='right') 

result.to_csv("output.csv", sep=";") 

どのように私を取得する必要がありますテスト:

import pandas as pd 

df1 = pd.DataFrame({'name': ['john', 'alex', 'michael', 'alex', 'john'], 
        'userId': ['null', 'null', 'null', 'null', 'null'], 
        'email': ['[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]'] 
        }, columns=['name','userId','email']) 

df2 = pd.DataFrame({'name': ['alex', 'michael', 'john'], 
        'userId': ['5', '10', '12'], 
        'email': ['[email protected]', '[email protected]', '[email protected]'] 
        }) 

df1 = df1.drop(['userId'], axis=1) 

result = pd.merge(df1, df2, on=['name','email'], how='right') 

print(df1) 
print(df2) 

print(result) 
+0

元あなたはそれを試してみることができますか? –

+0

マージメソッドに切り替えました。うまくいけば、あなたのために働きます! 'how = 'outer''を' how =' inner''に変更して長さdf2だけのリストを持たせます。 – HSchmachty

1

だから私はあなたがファイル1からのユーザーIDフィールドをドロップすると、ファイル2から名前をドロップする場合は、メールアドレスの2つのデータフレームをマージと思うあなたは

関連する問題