使用双forloops计算列上的平均值

2024-09-27 23:28:15 发布

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

我有下表

import pandas as pd
full_data=pd.read_csv('candy-data.csv')
full_data.head(5)

给我这个output table

我现在试图创建一个表,列出从chocolate到pluribus的每一列的平均winpercent值,我试图对其进行双for循环。情况如下:

categories=["chocolate", "fruity", "caramel", "peanutyalmondy","nougat","crispedricewaver","hard","bar","pluribus"]
def Value(valuename):
    for i in range(len(categories)):
        print("Average of "+str(valuename)+": "+round(statistics.mean(full_data[full_data[valuename]==1].iloc[:,-1])))
        for m in categories:
            Value(m)

如您所见,我正试图让categories列表的每个元素贯穿整个过程(即,将完整的数据帧分解为元素值等于1的位置,取winpercent所在的最后一列,返回此列表的winpercent平均值并插入/返回句子)“元素的平均值:WINPERCENT\u MEAN\u元素)

然而,运行这段代码会导致任何结果。有人能向我解释我做错了什么和/或如何正确设置我的代码吗


Tags: csvin元素列表fordatavaluefull
2条回答

您可以尝试以下方法:

import numpy as np
categories=["chocolate", "fruity", "caramel", "peanutyalmondy","nougat","crispedricewaver","hard","bar","pluribus"]

d={i: np.mean(full_data[full_data[i]==1]['winpercent']) for i in categories}

您可以尝试以下代码片段:

categories=["chocolate", "fruity", "caramel", "peanutyalmondy","nougat","crispedricewaver","hard","bar","pluribus"]

def getMean(columnName):
  for c in categories:
    print("Average of {0}: {1}".format(c, df[df[c]==1][columnName].mean()))
getMean("winpercent")

相关问题 更多 >

    热门问题