我有500行的数据。我想按照"ESG合并得分2011“一栏进行排序(见下文)。问题是,它只按最后一栏进行排序,不改变相应的公司和市值。这意味着前2列不会因为最后一列而改变(所有列都应该粘贴在一起)。我只想按照ESG加起来的分数对公司进行分类。我在这里该怎么办?
事先非常感谢
之前,我从数据集中提取这三列(其中包含50列和500行):
df = pd.DataFrame(data=dataset)
df1 = df[['Company Common Name', 'Company Market Capitalization', 'ESG Combined Score 2011']]在对最后一列("ESG合并分数“)进行排序之前,输出
df1
Company Common Name Company Market Capitalization ESG Combined Score 2011
0 SSR Mining Inc 3.129135e+09 32.817325
1 Fluor Corp 3.958424e+09 69.467729
2 CBRE Group Inc 2.229251e+10 59.632423
3 Assurant Inc 8.078239e+09 46.492803
4 CME Group Inc 6.269954e+10 42.469682
5 Peabody Energy Corp 3.842130e+09 73.374671用于排序的代码:
sorted_2011 = df1.sort_values(by= ['ESG Combined Score 2011'], ascending=False)之后的输出:
Company Common Name Company Market Capitalization ESG Combined Score 2011
0 SSR Mining Inc 3.129135e+09 88.881182
1 Fluor Corp 3.958424e+09 85.249202
2 CBRE Group Inc 2.229251e+10 84.357820
3 Assurant Inc 8.078239e+09 84.191950
4 CME Group Inc 6.269954e+10 82.592251
5 Peabody Energy Corp 3.842130e+09 81.509097正如您所看到的,最后一列是排序的,很好。但是前2列和以前一样(不应该是这样),事实上88.88的分数相当于“德州仪器公司”。而不是像上面的例子那样的"SSR挖掘“。
这里怎么了?
发布于 2022-10-17 11:57:29
这个有用吗?否则,请给我们看看你到目前为止尝试了什么。
#some sample data
df = pd.DataFrame({
'col1': [2, 1, 9, 8, 7, 4],
'col2': [0, 1, 9, 4, 2, 3],
'col3': ['A', 'C', 'B', 'E', 'D', 'C']
})
#sort values by col3
df = df.sort_values(by=['col3'])df输出
col1 col2 col3
0 2 0 A
2 9 9 B
1 1 1 C
5 4 3 C
4 7 2 D
3 8 4 Ehttps://stackoverflow.com/questions/74095927
复制相似问题