Python 按最后一个有效项的子集df
我可以返回最后一个有效项的索引,但我希望使用相同的方法来子集df。例如,下面的代码返回2最后一次出现在df中的时间。但是我想用这个索引返回dfPython 按最后一个有效项的子集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
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
谢谢有点尴尬。我想这可能是一个快速解决办法