Pandas 列中每个组的第二个最大值

Pandas 列中每个组的第二个最大值,pandas,max,Pandas,Max,我想要每个城市的第二大销售额 没有这样模拟的样本数据 排序、移位和取第一个值给出您想要的结果 状态 出售 加利福尼亚 11 佛罗里达州 8. 您可以按降序对Sales列进行排序,然后在每组的第二行中使用。请注意,nth()中的n为零索引 US\u Sales.sort\u值(['State','Sales',升序=[True,False]).groupby('State').nth(1).重置\u索引() 您也可以选择最大的2个值,然后通过各种方法保留最后一个值: largest2=df.s

我想要每个城市的第二大销售额
  • 没有这样模拟的样本数据
  • 排序、移位和取第一个值给出您想要的结果
  • 状态 出售 加利福尼亚 11 佛罗里达州 8.
    您可以按降序对
    Sales
    列进行排序,然后在每组的第二行中使用。请注意,
    nth()
    中的
    n
    为零索引

    US\u Sales.sort\u值(['State','Sales',升序=[True,False]).groupby('State').nth(1).重置\u索引()
    
    您也可以选择最大的2个值,然后通过各种方法保留最后一个值:

    largest2=df.sort_值(['State','Sales'],升序=[True,False]).groupby('State')['Sales'].nlargest(2)
    #方法1
    #按“状态”删除重复项,保留最后一个
    largest2.reset_index().drop('level_1',axis=1)。drop_副本(['State'],keep='last')
    #方法2
    #按“状态”分组,保留最后一个
    largest2.groupby('State').tail(1).重置索引().drop('level_1',轴=1)
    
    您可能需要查找而不是
    .nlargest()
    US_Sales=pd.read_excel("C:\\Users\\xxxxx\\Desktop\\US_Sales.xlsx")
    US_Sales
    
    US_Sales.State.nlargest(2,'Sales').groupby(['Sales'])
    
    df = pd.DataFrame([{"state":"Florida","sales":[22,4,5,6,7,8]},
                 {"state":"California","sales":[99,9,10,11]}]).explode("sales").reset_index(drop=True)
    
    df.sort_values(["state","sales"], ascending=[1,0]).groupby("state").agg({"sales":lambda x: x.shift(-1).values[0]})