2017-08-29 4 views
1

私は、時間の経過とともに株価を表す2つのデータフレームと、時間の経過とともに株関連情報(例えば、会社の基本データ)を持っています。2つのパンダデータフレームのフィルタエレメント

両方のデータフレームには月次データが含まれていますが、データのフレームはそれぞれ異なる期間に渡っています。 1つは5年、もう1つは10年です。また、両方の株数が同じではなく、80%の重複しかありません。以下

データフレームの例である:

days1 = pd.date_range(FREQ = 'M'、7 '/ 1/1980年代=末端、' 1/1/1980年代=開始)

DF1 = pd.DataFrame(np.random.randn(6、4)、カラム=リスト( 'ABCD')、インデックス= days1)

days2 = pd.date_range(1/1980分の1 =の 'を起動します'、end =' 5/1/1980 '、freq =' M ')

df2 = pd.DataFrame(np.random.randn(4,6)、columns = list(' ABCDEF ')、index =日2)

私の目標は、両方のデータフレームを内側の関節に縮小することです。つまり、両方とも同じ期間をカバーし、同じ株式を含みます。インデックスには日付が含まれ、列名はストック名です。

私はmerge()などの複数のバリエーションを試しましたが、それらはマージされたデータフレームを作り直しました。私は両方のデータフレームを保持したいと思います。私もisin()を試みましたが、私は各データフレームのインデックスにアクセスするのに苦労しています。 。例えば:

DF3 = DF1 [df1.isin(DF2)] dropna()

は、誰かが何か提案はありますか?行の交差点のため

column_intersection = df1.columns & df2.columns 

:列の交差点のため

+2

あなたのコードの例を投稿してください。 – James

答えて

1

row_intersection = df1.index & df2.index 

は、単に各データフレームのサブセット:

df1 = df1.loc[row_intersection, column_intersection] 
df2 = df2.loc[row_intersection, column_intersection] 
+0

ありがとうございました。それは信じられないほどシンプルで美しいですが、私は数時間かけてこれを理解しようとしました!! –

関連する問題