python - Pandas+Python - 如何知道值何时发生变化?

标签 python pandas

我一直在研究 DataFrame,如下面的摘录,我想知道值何时发生变化:

     A     M     C
0   2.0    1    C1
1   2.0    1    C1
2   2.0    2    C1
3   2.0    2    C1
4   2.0    3    C1
5   2.0    3    C1
6   2.0    1    C2
7   2.0    1    C2
8   2.0    2    C2
9   2.0    2    C3
10  2.0    3    C3
11  2.0    3    C3
13  2.1    1    C3
14  2.1    1    C3
15  2.1    2    C3
16  2.1    2    C3
17  2.1    3    C3
18  2.1    3    C3

我知道当M从1开始时,A或C总是会改变。问题是每次M值从1开始时如何获取位置?

最佳答案

我不知道您的整个数据集的构建方式是否与您向我们展示的数据集相同,但从我所看到的情况来看,您正在 m 列中搜索 3 到 1 的出现,这会导致差异共 -2 :

df[df['M'].diff()==-2].index
Out[101]: Int64Index([6, 13], dtype='int64')

假设您的 M 列总是增加,但它可能会高于 3,您可以只查找第一次出现的负数,例如:

df[df['M'].diff()<0].index
Out[103]: Int64Index([6, 13], dtype='int64')

假设没有您可以简单执行的模式:

df[(df['M'].diff()!=0) & (df['M']==1)].index
Out[104]: Int64Index([0, 6, 13], dtype='int64')

这是添加索引 0,因为 .diff() 将为数据帧的第一个索引返回 NaN,即 !=0df['M '] ==0

关于python - Pandas+Python - 如何知道值何时发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40207023/

相关文章:

python - 使用 python 通知

python - 根据开始和结束日期按组扩展行

python - 如何从单个列中获取多个列?

python - 如何更有效地替换列?

python - 使用 SMTP SSL/端口 465 发送电子邮件

python - 通过对列进行分组来合并 pandas 数据框的行

python - 在分隔文件中改组列

python - Pandas 将多个列与数据框中的特定列进行比较

python - 是否可以读取一个空的 csv 文件?

Python,按最低子对象属性对对象列表进行排序