2017-03-23 14 views
0

同じ在庫の2つの異なるデータフレームがありますが、1つのデータフレームにはより多くのデータと価格があります。 列の1つを比較して、それらの相違点を調べたいと思います。 データフレームのの一つは、より多くの日付を持っているので、私はLOCを使用して、それをスライスしようとしているエラーが発生したlocを使用したブールインデックス

df

Date   Open Close 
2007-03-22 3.65  1.0 
2007-03-23 3.87  1.0 
2007-03-26 3.83  1.0 
2007-03-27 3.61  1.0 
2007-03-28 4.65  1.0 

df2

Date   Open Close 
2007-03-22 3.15 1.0 
2007-03-23 3.87 0.0 
2007-03-26 3.33 0.0 
2007-03-27 3.61 0.0 
2007-03-28 4.65 0.0 

(以下データフレームの小さいバージョンです)ブーリアンインデックスを使用して、それらの相違点を調べます。

私はこのようないくつかの

df.Open[df.loc['2010-01-04':, 'Open'] != df2.loc['2010-01-04':, 'Open']] 

を試してみました私は、両方のデータフレームの「オープン」の列を比較したい、と日付のみのスライスで。私は出力を、それぞれの 'Open'カラムで異なるところでdf.Openカラム(およびインデックス)にするだけです。

が、私はあなたがブールインデックスを使用する場合、サブセット化されるオブジェクトは次のことを試して、ブールシリーズと同じ長さを持っている必要があり、

pandas.core.indexing.IndexingError: Unalignable boolean Series key provided

答えて

2

をエラーを取得しています:

df.Open.loc['2010-01-04':][df.loc['2010-01-04':, 'Open'] != df2.loc['2010-01-04':, 'Open']] 

エラーこの例で再生することができる。

df = pd.DataFrame({"A": [1,2,3,4]})  
df.A[df.loc[2:, 'A'] == df.loc[2:, 'A']] 

IndexingError: Unalignable boolean Series key provided

しかし、これは正常に動作します:

df.A.loc[2:][df.loc[2:, 'A'] == df.loc[2:, 'A']] 

#2 3 
#3 4 
#Name: A, dtype: int64 
+0

非常に興味深いです。私はこのルールについて知らなかった。ありがとうございました。 – Moondra

関連する問題