我使用pythonshift函数来比较序列中的值是否等于previus值。基本上
import pandas as pd
a = pd.Series([2, 2, 4, 5])
a == a.shift()
Out[1]:
0 False
1 True
2 False
3 False
dtype: bool
这是意料之中的。(第一个比较是错误的,因为我们正在与移位序列的NA
进行比较)。现在,我有一个没有任何值的序列,比如None
,像这样
在这里比较两个None
得到{
b == b.shift()
Out[3]:
0 False
1 False
2 False
3 False
dtype: bool
不过,我愿意接受某种哲学推理,认为比较是没有意义的等等
c = None
d = None
c == d
Out[4]: True
这是怎么回事?!在
而且,我真正想知道的是,如果我想让我的b
-系列被同等对待,我该如何对b
-系列进行比较呢?也就是说,我希望b == b.shift()
给出与{
如果可以定期比较相邻条目(即最后一个条目与第一个条目进行比较),还有另一个使用numpy roll函数的简单解决方案:
退货:
^{pr2}$如here所示,没有人能与在熊猫/纽比中不平等的楠相提并论。在
但对于“无”,您可以使用“应用”:
将}具有不等于自身的属性:
None
转换为NaN
和{如您所见:
^{pr2}$我不确定您如何才能使其正常工作,尽管它可以:
第一行将得到一个错误的结果,因为当您
shift
向下时,您正在与一个不存在的行进行比较:{{cd2>与第一行cd2}相比较。在
要解决第一行的误报,可以将结果切片以忽略第一行:
至于它为什么被强制转换,}值,}不能用
Pandas
试图将数据强制到一个兼容的numpy,这里选择float是因为int
和{None
和{int
来表示要获得与示例中的
a
相同的结果,您应该将第一行重写为False
,因为它总是失败的:相关问题 更多 >
编程相关推荐