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)