Python 从数据框中选择行,考虑列的重复值
考虑以下示例(针对问题)数据帧:Python 从数据框中选择行,考虑列的重复值,python,pandas,dataframe,Python,Pandas,Dataframe,考虑以下示例(针对问题)数据帧: df1=pd.DataFrame({'ID':[91,2,33,41,56,78,910,331],'Score':[97,91,92,84,95.6,92,89,90]}) 我有一个用df1作为参数之一调用的函数。除此之外,函数需要在按分数排序后返回前n行(例如,在本例中为3行): def sortandextract(df1,n1,...): ... df1.sort_values(by=['Score'], ascending=[Fals
df1=pd.DataFrame({'ID':[91,2,33,41,56,78,910,331],'Score':[97,91,92,84,95.6,92,89,90]})
我有一个用df1作为参数之一调用的函数。除此之外,函数需要在按分数排序后返回前n行(例如,在本例中为3行):
def sortandextract(df1,n1,...):
...
df1.sort_values(by=['Score'], ascending=[False],inplace=True)
df2=df1[:n1]
...
return(df2,len(df2))
使用不同的DF1多次调用此函数(这些数据帧有数百行)。有时,分数会重复(如上所述),有时则不会
我想要一个pythonic方法来返回n1+k行(其中k是score列中最后一个分数重复的次数)。在上面的示例中,如果要执行函数调用,我将遇到一个问题:
sortandextract(df1,3)
我希望此函数调用返回4行。我们可以执行
rank
n=3
ret=df1[df1.Score.rank(method='min',ascending=False)<=n]
ID Score
0 91 97.0
2 33 92.0
4 56 95.6
5 78 92.0
n=3
ret=df1[df1.Score.rank(method='min',升序=False)谢谢。我对使用.Score感到不安。我的一些名为的列中有空格。有没有更可靠的方法来做到这一点?@user2751530只需使用df1['Score']
。是的,@user2751530坚持使用['column name']约定而不是点符号是明智的。