【问题标题】:Python comprehension vs normal indexingPython 理解与普通索引
【发布时间】:2021-11-03 13:11:02
【问题描述】:

有人可以在下面的示例中解释一下 python 理解与普通索引的行为吗?

ser1 = pd.Series([1, 2, 3, 4, 5])

ser2 = pd.Series([4, 5, 6, 7, 8])

[x for x in ser1 if x not in ser2]    gives 5

ser1[~ser1.isin(ser2)]  

给出正确的 1 , 2, 3

我应该如何编写我的 python 理解以获得正确的结果?

【问题讨论】:

  • 如果你使用简单的python列表而不是pandas类,效果很好

标签: python indexing list-comprehension


【解决方案1】:
import pandas as pd
ser1 = pd.Series([1, 2, 3, 4, 5])
ser2 = pd.Series([4, 5, 6, 7, 8])
print([x for x in ser1 if x not in ser2]) # 5

not in(和 in)对 pd.Series 发生的事情确实考虑索引而不是值,ser1ser2 的值都编号为 0,1,2,@987654330 @,4,所以 not in 仅适用于 5。 您应该对值进行成员资格测试,即:

print([x for x in ser1 if x not in ser2.values]) # [1, 2, 3]

【讨论】:

  • 非常感谢;很清楚
【解决方案2】:

迭代系列的值可以解决问题。

[x for x in ser1.values if x not in ser2.values]

【讨论】:

  • 非常感谢。它有帮助
猜你喜欢
  • 2015-10-29
  • 2019-10-27
  • 1970-01-01
  • 2019-09-16
  • 2018-07-21
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多