df = df1.loc[df1['CUST_ACCT_KEY'] != df2['CUST_ACCT_KEY']]
执行上述命令时,出现以下错误:
ValueError:只能比较标记相同的Series对象
我在做什么错?*
两列的dtypes为int64
。
答案 0 :(得分:0)
Pandas
几乎使用固有数据对齐来执行其所有操作,这意味着它使用索引来比较和执行操作。
您可以通过使用numpy
将系列之一转换为.values
数组来避免此错误:
df = df1.loc[df1['CUST_ACCT_KEY'] != df2['CUST_ACCT_KEY']].values
但是,您正在比较没有索引对齐的行。
MCVE:
df1 = pd.DataFrame(np.arange(1,10), index=np.arange(1,10),columns=['A'])
df2 = pd.DataFrame(np.arange(11,20), index=np.arange(11,20),columns=['B'])
df1['A'] != df2['B']
输出:
ValueError: Can only compare identically-labeled Series objects
更改为numpy数组:
df1['A'] != df2['B'].values
输出:
1 True
2 True
3 True
4 True
5 True
6 True
7 True
8 True
9 True
Name: A, dtype: bool