如何获取表中某列中某个值的百分比

2024-05-23 18:58:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的数据框架:

^{tb1}$

我需要两样东西:

  1. 哪个国家拥有最大的能源;我这样做:
    df = df.sort_values(by=['% Renewable'],ascending=False).head(1)
  1. 该值在所有国家/地区的百分比,并以带有(Country Name, %)的元组形式返回该值

我怎样才能做到这一点

更新1:我这样做了:

def answer_six():
    df = answer_one()
    #print(df)
    suma = df['% Renewable'].sum()
    top3 = df['% Renewable'].nlargest(1)
    tups = list(zip(top3.index, top3.div(suma)*100))
    return tups

但是签名者说我需要返回一个元组,不是吗


Tags: 数据answer框架dfby国家sort能源
2条回答

使用max然后对元组使用zip分割列并转换为列表:

top = df['% Renewable'].max()
print (top)
103

如果Country是索引,需要排名前三的国家使用:

top3 = df['% Renewable'].nlargest(3)
tups = list(zip(top3.index, top3))
print (tups)

假设您的df包含一列'country'和另一列'%Renewable'。 完成排序后(不使用head(1)):

df = df.sort_values(by=['% Renewable'],ascending=False)

只需使用for循环:

for i in range(len(df)):
    c = (df.loc[i,'country'],df.loc[i,'% Renewable'])
    print(c)

如果要另存为元组:

t = list(zip(df['country'],df['% Renewable']))
print(t)

如果您只对打印感兴趣,请使用列表理解:

[print(df.loc[i,'country'],df.loc[i,'% Renewable']) for i in range(len(df))]

因为您已经对df进行了排序,所以它将按降序打印

相关问题 更多 >