如何在熊猫数据框中找到连续值的最后一个值?

时间:2019-06-19 07:55:31

标签: python pandas dataframe

我有一个像这样的数据框

df:
col1     col2
 1        10
 1        20
 2        11
 3        33
 1        20
 1        10
 2        24
 3        21
 3        28

我想在col1上有连续值的数据帧上分组,并为每个连续组取最后一个值,

最终数据框应如下所示:

df
col1    col2
 1       20
 2       11
 3       33
 1       10
 2       24
 3       28

我尝试过类似的操作:

 df['b_new'] = df.groupby('col1')['col2'].transform('last')

但是它缺少连续条件。

如何使用pandas / python以最有效的方式实现它

1 个答案:

答案 0 :(得分:2)

boolean indexingSeries.ne-1系列的Series.shift进行过滤,以用于最后重复的连续行:

df1 = df[df['col1'].ne(df['col1'].shift(-1))]
print (df1)
   col1  col2
1     1    20
2     2    11
3     3    33
5     1    10
6     2    24
8     3    28

详细信息

print (df['col1'].ne(df['col1'].shift(-1)))
0    False
1     True
2     True
3     True
4    False
5     True
6     True
7    False
8     True
Name: col1, dtype: bool