通过最后一个有效项目对df进行分组

时间:2019-08-21 07:14:27

标签: python pandas dataframe

我可以返回最后一个有效项目的索引,但是我希望使用相同的方法对df进行子集化。例如,以下代码返回2出现在df中的最后时间。但是我想使用该索引返回df。

import pandas as pd

df = pd.DataFrame({              
    'Number' : [2,3,2,4,2,1], 
    'Code' : ['x','a','b','c','f','y'],                          
    })

df_last = df[df['Number'] == 2].last_valid_index()

print(df_last)

4

预期输出:

   Number Code
0       2    x
1       3    a
2       2    b
3       4    c
4       2    f

1 个答案:

答案 0 :(得分:2)

您可以使用loc,但是解决方案仅在列中至少有一个值2时有效:

df = df.loc[:df[df['Number'] == 2].last_valid_index()]
print (df)
   Number Code
0       2    x
1       3    a
2       2    b
3       4    c
4       2    f

一般解决方案应该是:

df = df[(df['Number'] == 2)[::-1].cumsum().ne(0)[::-1]]
print (df)
   Number Code
0       2    x
1       3    a
2       2    b
3       4    c
4       2    f