通过检查连续元素来切片数据框

时间:2018-05-14 00:00:23

标签: python pandas dataframe

我有一个按时间索引的DF,其中一个列(带有2个变量)就像[x,x,y,y,x,x,x,y,y,y,y,x]。我想切片这个DF所以我得到这个没有相同连续变量的列 - 在这个例子中:[x,y,x,y,x],每个变量都是他子序列中的第一个。

仍在试图弄清楚......

谢谢!

2 个答案:

答案 0 :(得分:2)

假设你有下面的df

df=pd.DataFrame(['x','x','y','y','x','x','x','y','y','y','y','x'])

我们使用shift来查找下一个是否等于当前

df[df[0].shift()!=df[0]]
Out[142]: 
    0
0   x
2   y
4   x
7   y
11  x

答案 1 :(得分:0)

你jsut尝试循环并安全使用最后一个元素

df=pd.DataFrame(['x','x','y','y','x','x','x','y','y','y','y','x'])
df2=pd.DataFrame()

old = df[0].iloc[0] # get the first element
for column in df:
    df[column].iloc[0] != old:
        df2.append(df[column].iloc[0])
        old = df[column].iloc[0]

编辑:

或者对于矢量使用列表

>>> L=[1,1,1,1,1,1,2,3,4,4,5,1,2]
>>> from itertools import groupby
>>> [x[0] for x in groupby(L)]
[1, 2, 3, 4, 5, 1, 2]