Python for循环创建一个包含特定列平均值的新列,并生成一个;“缺少值”;消息在哪里

Python for循环创建一个包含特定列平均值的新列,并生成一个;“缺少值”;消息在哪里,python,pandas,for-loop,Python,Pandas,For Loop,我对python非常陌生,所以提前道歉,我已经尝试解决这个问题好几个小时了 我有一组这样的数据,但要大得多: A B C D 1 23 16 NaN 14 2 26 17 23 23 3 23 NaN 22 25 4 24 34 28 28 我需要制作另一个列(E),为特定行获取特定列(如B、C和D)的平均分数 如果这一行中有任何缺失值(NaN),那么我需要在E行中显示“缺失数据”,而不是平均分数所在的位置 我曾尝试将NaN输出更改为0s(这是成功的)

我对python非常陌生,所以提前道歉,我已经尝试解决这个问题好几个小时了

我有一组这样的数据,但要大得多:

  A   B   C   D   
1 23  16  NaN 14
2 26  17  23  23
3 23  NaN 22  25
4 24  34  28  28
我需要制作另一个列(E),为特定行获取特定列(如B、C和D)的平均分数

如果这一行中有任何缺失值(NaN),那么我需要在E行中显示“缺失数据”,而不是平均分数所在的位置

我曾尝试将NaN输出更改为0s(这是成功的),然后运行类似于以下内容的操作(我的代码变得一团糟,我忘记了从何处开始或尝试了什么):

我知道这里的代码可能有很多错误,但这是我试图做的一个粗略的结构

我还尝试了在谷歌上找到的所有方法,包括其他技术,比如.loc函数。我不想寻求帮助,因为通常我相信我可以使用之前发布的问题自己找到解决方案,但在这种情况下,尽管花了数小时在谷歌上搜索,我还是无法让任何东西起作用

任何帮助都将不胜感激。我还被告知必须使用for循环。此外,如果可以在不将NaN值更改为0的情况下执行此操作,则更可取


感谢您的任何意见。

我相信您可能会尝试以下方式:

#创建缺少值的列E
df[“E”]=“缺少值”
对于idx,df.iterrows()中的行:
#尝试将您的值转换为foat,以防其中任何一个值为NaN,这将是正确的
#例外情况和通行证
尝试:
B=浮点(df.iloc[idx,“B”])
C=浮点(df.iloc[idx,“C”])
D=浮点(df.iloc[idx,“D”])
df.iloc[idx,“E”]=(B+C+D)/3#计算平均值并将其放在E上
除:
通过

如果有帮助,请告诉我!干杯

大意是:df['E']=df[['B','C','D']].mean()应该让您开始学习。此外,如果您被告知必须使用for循环;回到那个源代码,直截了当地说,在pandas中使用for循环是一个糟糕且低效的想法。如果您不介意,请将您的预期输出作为数据帧发布。把你想要的东西连接到一个视觉上要容易得多。我把你的代码应用到我的df上,得到了一个语法错误:无法在:
df.iloc(idx,“E”)=(B+C+D)/3
行上分配到函数单元格。是的,对不起,我刚刚注意到我的错误。让我把它改好!请再查一下
composite = []
for df in column ["A","B","C"]:
    if value > 0:
        composite.append(df[:, ["A","B","C"]].mean(axis=1))
    else:
        composite.append("missing value(s)")

df["composite"] = composite
print(df)