Python 使用pandas对数据帧进行取整和排序

Python 使用pandas对数据帧进行取整和排序,python,pandas,Python,Pandas,在代码的底部,关于问题3,我试图对数据进行平均、舍入和排序,但是由于某种原因,舍入和排序根本不起作用 i = df.columns.get_loc('2006') avgGDP = df[df.columns[i:]].copy() avgGDP = avgGDP.mean(axis=1).round(2).sort_values(ascending=False) avgGDP 我做错了什么 这是在应用平均、舍入和排序之前df的样子。 您的序列实际上已排序,第一行是1.5e+13,最后一行是4

在代码的底部,关于问题3,我试图对数据进行平均、舍入和排序,但是由于某种原因,舍入和排序根本不起作用

i = df.columns.get_loc('2006')
avgGDP = df[df.columns[i:]].copy()
avgGDP = avgGDP.mean(axis=1).round(2).sort_values(ascending=False)
avgGDP
我做错了什么

这是在应用平均、舍入和排序之前df的样子。

您的序列实际上已排序,第一行是
1.5e+13
,最后一行是
4.4e+11

Country
United States         1.536434e+13
China                 6.348609e+12
Japan                 5.542208e+12
Germany               3.493025e+12
France                2.681725e+12
United Kingdom        2.487907e+12
Brazil                2.189794e+12
Italy                 2.120175e+12
India                 1.769297e+12
Canada                1.660648e+12
Russian Federation    1.565460e+12
Spain                 1.418078e+12
Australia             1.164043e+12
South Korea           1.106714e+12
Iran                  4.441558e+11
舍入在这里不起任何作用,因为最小的值是
4e+11
,舍入到小数点后2位不会显示在此刻度上。如果您想在科学记数法中只保留两位小数,可以使用
.map({:0.2e}.format)
,请参阅下面的注释

注意:只是为了好玩,你也可以用一行代码来计算:

df.filter(regex='^2').mean(1).sort_values()[::-1].map('{:0.2e}'.format)
输出:

Country
United States         1.54e+13
China                 6.35e+12
Japan                 5.54e+12
Germany               3.49e+12
France                2.68e+12
United Kingdom        2.49e+12
Brazil                2.19e+12
Italy                 2.12e+12
India                 1.77e+12
Canada                1.66e+12
Russian Federation    1.57e+12
Spain                 1.42e+12
Australia             1.16e+12
South Korea           1.11e+12
Iran                  4.44e+11

你的df是什么?到目前为止,你对所有其他问题都做了完全相同的回答吗?我认为最好是你给我们看你的确切代码,看看可能出了什么问题。Github link在每个单元的基础上提供了所有内容、代码和输出。