Python 如何在最后一次出现值后删除所有行?
我有一个带有字符串列的dataframe,我希望在名称最后一次出现之后删除所有行Python 如何在最后一次出现值后删除所有行?,python,pandas,Python,Pandas,我有一个带有字符串列的dataframe,我希望在名称最后一次出现之后删除所有行 first_name Andy Josh Mark Tim Alex Andy Josh Mark Tim Alex Andy Josh Mark 我想在Alex最后一次出现后删除行,所以删除Andy、Josh和Mark的行 我想我会在第一次出现之前删除:df=df[(df.first\u name=='Alex').idxmax():],但不知道如何删除最后一行 谢谢 mask和bfill cumsum和id
first_name
Andy
Josh
Mark
Tim
Alex
Andy
Josh
Mark
Tim
Alex
Andy
Josh
Mark
我想在Alex最后一次出现后删除行,所以删除Andy、Josh和Mark的行
我想我会在第一次出现之前删除:df=df[(df.first\u name=='Alex').idxmax():]
,但不知道如何删除最后一行
谢谢 mask
和bfill
cumsum
和idxmax
cumsum
和max
u=(df['first_name']='Alex').shift().cumsum()
df[u
argmax
最后一个有效索引
选择3
选择4
备选案文5 这太傻了
df[np.logical_or.accumulate(df.first_name.eq('Alex')[::-1])[::-1]]
df.loc[:(df['first_name'] == 'Alex').cumsum().idxmax()]
first_name
0 Andy
1 Josh
2 Mark
3 Tim
4 Alex
5 Andy
6 Josh
7 Mark
8 Tim
9 Alex
u = (df['first_name'] == 'Alex').shift().cumsum()
df[u < u.max()]
first_name
1 Josh
2 Mark
3 Tim
4 Alex
5 Andy
6 Josh
7 Mark
8 Tim
9 Alex
df.iloc[:len(df) - (df.first_name.to_numpy() == 'Alex')[::-1].argmax()]
first_name
0 Andy
1 Josh
2 Mark
3 Tim
4 Alex
5 Andy
6 Josh
7 Mark
8 Tim
9 Alex
df.loc[:df.where(df == 'Alex').last_valid_index()]
df.loc[:df.first_name.eq('Alex')[::-1].idxmax()]
df.iloc[:np.flatnonzero(df.first_name.eq('Alex')).max() + 1]
df[np.logical_or.accumulate(df.first_name.eq('Alex')[::-1])[::-1]]