我试图排列列中的值,并将排名分配到第一列['Tickers']
的值。对于一些列我想排名较小值高和['Dividend']
通常排名 ,最好保存在新的数据帧 的行列所以可以说我有这个数据帧:排名数据框列
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
首先,我用0
替换缺失值df=df.replace('-',0)
那我就对他们进行排名,并创造新的数据框:
Ticker P/E Dividend
No.
1 NTCT 4 3
2 GWRE 3 3
3 PEGA 2 1
4 BLKB 1 2
我是个墨有关使用SciPy的统计rankdata在列(即:rankdata(df['P/E'], method='ordinal')
),但它返回的错误:
TypeError: '>' not supported between instances of 'int' and 'NavigableString'
您是否尝试过DataFrames可用的['.rank()'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.rank.html)方法? – Craig
另外:NavigableString的提到让我觉得你有从BeautifulSoup或某个地方进来的数据。你解析HTML吗?您应该确保在DataFrame中使用Python字符串(或数字,如果字符串表示数字),否则会出现一些奇怪的行为。 – DSM