Python 使用loc的布尔索引导致错误

Python 使用loc的布尔索引导致错误,python,pandas,dataframe,indexing,boolean,Python,Pandas,Dataframe,Indexing,Boolean,我有两个相同股票的不同数据帧,但一个数据帧有更多的数据和不同的价格。 我想比较其中一列,看看它们的不同之处。 (以下是数据帧的较小版本) 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

我有两个相同股票的不同数据帧,但一个数据帧有更多的数据和不同的价格。 我想比较其中一列,看看它们的不同之处。 (以下是数据帧的较小版本)

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
由于其中一个数据帧有更多的日期,我尝试使用loc对其进行切片,然后使用布尔索引找出它们的不同之处

我试过一些这样的

df.Open[df.loc['2010-01-04':, 'Open'] != df2.loc['2010-01-04':, 'Open']]
我只想比较两个数据帧的“Open”列,并且只比较一部分日期。我希望输出只是df.Open列(和索引),它们在各自的“Open”列中有所不同

但我发现了错误


pandas.core.index.indexing错误:提供了不可对齐的布尔序列键

使用布尔索引时,要子集的对象必须与布尔序列具有相同的长度,请尝试以下操作:

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:提供了不可对齐的布尔系列键

但这很好:

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

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

非常有趣。我不知道这条规则。非常感谢。