我試圖排列列中的值,並將排名分配到第一列['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