熊猫 - 连续值必须不同

时间:2014-10-14 16:15:49

标签: python pandas dataframe distinct-values subsampling

我想对数据帧的行进行子采样,使得给定列中的所有连续值对都不同,如果其中2个相同,则保留,比如第一个。

这是一个例子

p = [1,1,2,1,3,3,2,4,3]
t = range(len(p))
df = pd.DataFrame({'t':t, 'p':p})

df

   p  t
0  1  0
1  1  1
2  2  2
3  1  3
4  3  4
5  3  5
6  2  6
7  4  7
8  3  8



desiredDf

   p  t
0  1  0
2  2  2
3  1  3
4  3  4
6  2  6
7  4  7
8  3  8

在desiredDf中,p列中的所有2个连续值都不同。

1 个答案:

答案 0 :(得分:1)

这个怎么样?

>>> df[df.p != df.p.shift()]
   p  t
0  1  0
2  2  2
3  1  3
4  3  4
6  2  6
7  4  7
8  3  8

说明:df.p.shift()将列p的条目向下移动一行。 df.p != df.p.shift()检查df.p的每个条目是否与前一个条目不同,返回一个布尔值。

此方法适用于具有任意数量连续条目的列:例如如果存在三个相同值的运行,则仅返回该运行中的第一个值。