我一直在研究 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,即 !=0
和 df['M '] ==0
关于python - Pandas+Python - 如何知道值何时发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40207023/