0

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

这是一个例子

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 个连续值都是不同的。

4

1 回答 1

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是否与前一个条目不同,并返回一个布尔值。

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

于 2014-10-14T16:18:54.090 回答