私は2つのデータフレームdf1とdf2を持っています。python pandas:2つのデータフレームをマージしますが、リピート行はマージしません
DF1は以下の通りです:以下れる:
name exist
a 1
b 1
c 1
d 1
e 1
DF2は(名前だけで一つの列を持っている):
name
e
f
g
a
h
私は、これら2つのデータフレームをマージしたい、と繰り返し名をマージしませんでした、つまり、df2の名前がdf1に存在する場合は1回だけ表示し、そうでない場合はdf2がdf1に存在しない場合は存在値を0またはNanに設定します。例えばDF1(及びEがある)、およびDF2(およびeがあり、ちょうど、電子1時間を示した)として、私は次のDFになりたい:
a 1
b 1
c 1
d 1
e 1
f 0
g 0
h 0
私はconcat関数を使用しましたそれを行うには、私のコードは以下の通りです:
import pandas as pd
df1 = pd.DataFrame({'name': ['a', 'b', 'c', 'd', 'e'],
'exist': ['1', '1', '1', '1', '1']})
df2 = pd.DataFrame({'name': ['e', 'f', 'g', 'h', 'a']})
df = pd.concat([df1, df2])
print(df)
をしかし、結果が間違っている(名aとeがあったことを繰り返している):
exist name
0 1 a
1 1 b
2 1 c
3 1 d
4 1 e
0 NaN e
1 NaN f
2 NaN g
3 NaN h
4 NaN a
事前にあなたの手、感謝を与えてください!
感謝あなたの答え、私はそれを受け入れます。 「外側」の意味を詳しく教えてください。左、右、内側、バターの違いを意味します。ありがとう! – tktktk0711
これを確認してくださいhttp://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.htmlまたこのhttp://stackoverflow.com/questions/448023/what-is-the-difference左右の外側と内側のジョインの間にあります。おおまかに言えば、結合は、いくつかのキー列に基づいたテーブルの一種の一致です。 leftは最初のデータフレームからすべてのレコードを保持します。 rightは、第2のデータフレームからすべてのレコードを保持する。 innerは両方のデータフレームに存在するレコードのみを保持し、outerはすべてのレコードを保持します。 – Psidom
あなたの種類の答えに感謝! – tktktk0711