我有一个像这样的数据框
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以最有效的方式实现它
答案 0 :(得分:2)
将boolean indexing
与Series.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