0
上の2つのデータフレームをマージカラム。私はこれを取得したいと思います:私はこのように作成した2つのデータフレームを持つ日時インデックスと列
cat1 cat2
2011-01-01 1 111
2011-01-01 1 111
2011-01-01 2 222
私が使用してこれを取得しようとすると:
df3 = df1.merge(df2, how='inner', right_index=True, left_index=True, on='cat1')
をしかし、代わりに私は、この取得しています:
cat1 cat2
2011-01-01 1 111
2011-01-01 1 222
2011-01-01 1 111
2011-01-01 1 222
2011-01-01 2 111
2011-01-01 2 222
を私は確信しています私は私の前で何かを見落としているが、私はそれを理解することはできない。
私は実際には上記のシナリオを単純化して解決したため、実際の問題を解決できませんでした。私の実際の問題では、私はより多くの日付を持っています。
cat1 cat2
2017-05-14 200 111
2017-05-14 200 111
2017-05-14 200 111
2017-05-15 100 444
ありがとう:DF3のために私はこれを取得することを期待、
date1 = pd.DatetimeIndex(['2017-05-14', '2017-05-14', '2017-05-14', '2017-05-15'])
date2 = pd.DatetimeIndex(['2017-05-14', '2017-05-15', '2017-05-14', '2017-05-15'])
df1 = pd.DataFrame({'cat1': ['200', '200', '200', '100']}, index = date1)
df2 = pd.DataFrame({'cat1': ['200', '200', '100', '100'],
'cat2': ['111', '222', '333', '444']}, index = date2)
df3 = df1.merge(df2, how='inner', left_index=True, right_index=True, on='cat1')
print(df1)
print(df2)
print(df3)
cat1
2017-05-14 200
2017-05-14 200
2017-05-14 200
2017-05-15 100
cat1 cat2
2017-05-14 200 111
2017-05-15 200 222
2017-05-14 100 333
2017-05-15 100 444
cat1 cat2
2017-05-14 200 111
2017-05-14 200 222
2017-05-14 200 111
2017-05-14 200 222
2017-05-14 200 111
2017-05-14 200 222
2017-05-15 100 333
2017-05-15 100 444
しかし:
より正確次は私の実際の問題を表して!
以前のソリューションに類似と同じ、ミリアンペアでありますこれは間違いなく私が掲示した問題のために働く。ありがとうございました!残念ながら、私が投稿したものは単純化されたものでした。私はポストを少し編集して、私が何を意味するのかを示しています。別の質問をするべきかどうかは分かりませんが、それは非常に似ています。私はそれを動作させるためにすべてを試したような気がする! – RylonMcnz
インデックス(マルチインデックスのデータフレーム)に 'cat1'を入れるべきでしょう。ユーザーはdf1.reset_index()。set_index(['index'、 'cat1'])などのようにすることができます。これはうまくいくはずです:) 編集:いいえ、おそらくうまくいかないでしょう。私は何かを試してみます – pazqo
多くの感謝!ですから、本質的に私がここから集めるのは、カラムとインデックスをマージしたいのであれば、インデックスをカラムにするだけです。 – RylonMcnz