【发布时间】:2020-07-16 23:42:59
【问题描述】:
我对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 输出更改为 0(这很成功),然后运行类似于以下内容的内容(我的代码变得一团糟,我忘记了从哪里开始或尝试了什么):
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)
我知道这里的代码可能有很多错误,但它是我正在尝试做的粗略结构。
我还尝试了所有可以在 google 上找到的方法,包括其他技术,例如 .loc 函数。我不想寻求帮助,因为通常我相信我可以使用以前发布的问题自己找到解决方案,但在这种情况下,尽管花费数小时通过谷歌梳理,我仍然无法完成任何工作。
任何帮助将不胜感激。我还被告知我必须使用 for 循环。此外,如果这可以在不将 NaN 值更改为 0 的情况下完成,那将是更可取的。
感谢您的任何意见。
【问题讨论】:
-
df['E'] = df[['B', 'C', 'D']].mean() 应该让你开始。此外,如果你被告知必须使用 for 循环;回到那个源头,断然地说,在 pandas 中使用 for 循环是一个糟糕且低效的想法。
-
你的代码对我不起作用
-
如果您不介意,请将您的预期输出作为数据框发布。将您想要的内容与视觉效果联系起来要容易得多。