python - bool 值总是返回 true? ( Pandas )

标签 python pandas

我目前正在处理 csv 中的大量数据。这些数据正在使用 Pandas 导入到我的程序中。我目前正在尝试做的是检查系列中是否正在发生变化。我的数据框结构如下:

数据框

Time      Data
209012424 123
209012424 352
209012424 1267
209012424 753
209012424 333
209012424 542
209012424 940
209012425 421
209012425 12
209012425 344
209012425 1
209012425 346
209012425 1435
209012428 555
209012428 322

如您所见,显示了一系列具有值的信息。我想要做的是创建一个新列来检查时间列中是否发生了变化。所需的输出将是:

Time      Data      Change
209012424 123       False
209012424 352       False
209012424 1267      False
209012424 753       False
209012424 333       False
209012424 542       False
209012424 940       False
209012425 421       True
209012425 12        False
209012425 344       False
209012425 1         False
209012425 346       False
209012425 1435      False
209012428 555       True
209012428 322       False

我的解决方案是使用以下代码:

cond1 = wholedf['TIME'].diff().shift(-1).eq(1).where(wholedf['TIME']==0)
    
wholedf['Change'] = wholedf['TIME'].diff().eq(1).where(wholedf['TIME'] == 1).fillna(cond1).astype('bool')

但是,我得到了输出:

Time      Data      Change
209012424 123       True
209012424 352       True
209012424 1267      True
209012424 753       True
209012424 333       True
209012424 542       True
209012424 940       True
209012425 421       True
209012425 12        True 
209012425 344       True
209012425 1         True
209012425 346       True
209012425 1435      True
209012428 555       True
209012428 322       True

我不知道为什么会得到这个,但我希望其他人有解决方案!

希望这是足够的信息!提前谢谢你。

最佳答案

如果需要 True 用于没有第一行的所有更改值,请使用 Series.diff并比较更大的 0:

#added absolute if possible groups are not sorted
wholedf['Change'] = wholedf['TIME'].diff().abs().gt(0)
#first solution
#wholedf['Change'] = wholedf['TIME'].diff().fillna(0).ne(0)

print (wholedf)
         TIME  Data  Change
0   209012424   123   False
1   209012424   352   False
2   209012424  1267   False
3   209012424   753   False
4   209012424   333   False
5   209012424   542   False
6   209012424   940   False
7   209012425   421    True
8   209012425    12   False
9   209012425   344   False
10  209012425     1   False
11  209012425   346   False
12  209012425  1435   False
13  209012428   555    True
14  209012428   322   False

关于python - bool 值总是返回 true? ( Pandas ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69939538/

相关文章:

python - 根据索引在 Pandas 数据框中查找特定列的值

python - 汇总一列

python - Flask:提交表单后重定向到同一页面

python - 在 Python 2.4 中超时 urllib2 urlopen 操作

python - 如何使用python调整图像大小但保留像素值

python - 未计算 DecisionTreeRegressor 分数

python - 在 Numpy 中获取向量集并集的有效方法

python - 正确使用apply函数去除NAN

python - 使用 .join 函数从列表中连接 python 字符串不会输出想要的结果

python - 使用来自另一个多索引数据帧的 .loc 填充数据帧值的最快方法