Python 对数据帧列进行排序

Python 对数据帧列进行排序,python,pandas,scipy,Python,Pandas,Scipy,我正在尝试对列中的值进行排名,并将排名分配给第一列的值['Tickers']。对于某些列,我希望将较小的值排在较高的位置,而对于['divident']则会正常排列 最好将这些列存储在新的数据帧中 假设我有这个数据帧: Ticker P/E P/S P/B P/FCF Dividend No. 1 NTCT 457.32 3.03 1.44 26.04 - 2 GWRE 416.

我正在尝试对列中的值进行排名,并将排名分配给第一列的值
['Tickers']
。对于某些列,我希望将较小的值排在较高的位置,而对于
['divident']
则会正常排列 最好将这些列存储在新的数据帧中 假设我有这个数据帧:

    Ticker  P/E     P/S     P/B    P/FCF    Dividend
No.                     
1   NTCT    457.32  3.03    1.44    26.04   -
2   GWRE    416.06  9.80    5.33    45.62   -
3   PEGA    129.02  4.41    9.85    285.10  0.0128
4   BLKB    87.68   4.96    14.36   41.81   0.0062
    Ticker  P/E   Dividend  
No.                     
1   NTCT    4        3
2   GWRE    3        3
3   PEGA    2        1 
4   BLKB    1        2
首先,我用0替换缺少的值

 df=df.replace('-',0)
然后我将对它们进行排序并创建新的数据帧:

    Ticker  P/E     P/S     P/B    P/FCF    Dividend
No.                     
1   NTCT    457.32  3.03    1.44    26.04   -
2   GWRE    416.06  9.80    5.33    45.62   -
3   PEGA    129.02  4.41    9.85    285.10  0.0128
4   BLKB    87.68   4.96    14.36   41.81   0.0062
    Ticker  P/E   Dividend  
No.                     
1   NTCT    4        3
2   GWRE    3        3
3   PEGA    2        1 
4   BLKB    1        2
我曾考虑在列上使用scipy stats rankdata(即:
rankdata(df['p/e'],method='ordinal')
),但它返回了错误:

TypeError: '>' not supported between instances of 'int' and 'NavigableString'
正如您可以使用的方法:

解释(逐步):

正如您可以使用的方法:

解释(逐步):

您应该使用:

然后,您可以选择所需的列并从中获取,以创建新的数据帧。

您应该使用:


然后,您可以选择所需的列,并从中获取新的数据帧。

您尝试过数据帧可用的方法吗?旁白:NavigableString一词让我觉得您有来自BeautifulSoup或其他地方的数据。你解析HTML了吗?您应该确保在数据帧中使用Python字符串(或数字,如果字符串表示数字),否则会出现一些奇怪的行为。您尝试过数据帧可用的方法吗?旁白:NavigableString一词让我觉得您的数据来自BeautifulSoup或其他地方。你解析HTML了吗?您应该确保在数据帧中使用Python字符串(或数字,如果字符串表示数字),否则会出现一些奇怪的行为。应该是
“强制”
--
“coerse”
只是意外地作为一个故障而起作用,如果我正确阅读了代码。应该是
“强制”
-
“强制”
如果我正确阅读了代码,那么它只能作为一个偶然的故障。
df.rank(method='min', ascending=False)