【问题标题】:ValueError: Can only compare identically-labeled Series objects pythonValueError:只能比较标记相同的系列对象python
【发布时间】:2018-12-06 14:59:58
【问题描述】:
df = df1.loc[df1['CUST_ACCT_KEY'] != df2['CUST_ACCT_KEY']]

当我执行上述命令时,出现以下错误:

ValueError: 只能比较标签相同的 Series 对象

我做错了什么?*

两列的dtypes都是int64

【问题讨论】:

  • df1 和 df1 的索引在执行操作前都被重置

标签: python pandas


【解决方案1】:

Pandas 几乎所有的操作都使用内在数据对齐,这意味着它使用索引来比较和执行操作。

您可以通过使用.values 将其中一个系列转换为numpy 数组来避免此错误:

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

【讨论】:

  • df1 和 df2 的索引在我执行任务之前都已重置。我也尝试了 numpy.where,但产生了相同的结果
  • 您能否在问题中发布一些数据以及代码。
  • 我利用我的唯一索引来过滤数据。不需要重置数据 - df.drop(df_subset.index)
猜你喜欢
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
相关资源
最近更新 更多