Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按最后一个有效项的子集df_Python_Pandas_Dataframe - Fatal编程技术网

Python 按最后一个有效项的子集df

Python 按最后一个有效项的子集df,python,pandas,dataframe,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['N

我可以返回最后一个有效项的索引,但我希望使用相同的方法来子集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

您可以使用
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

谢谢有点尴尬。我想这可能是一个快速解决办法