我有一个按时间索引的DF,其中一个列(带有2个变量)就像[x,x,y,y,x,x,x,y,y,y,y,x]。我想切片这个DF所以我得到这个没有相同连续变量的列 - 在这个例子中:[x,y,x,y,x],每个变量都是他子序列中的第一个。
仍在试图弄清楚......
谢谢!
答案 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]