【发布时间】:2022-11-14 13:23:31
【问题描述】:
我有以下熊猫 DF:
val
1 10
2 20
3 30
4 40
5 30
我想得到两个输出列:平均和avg_sep
平均应该是逐行计算的平均值。
avg_sep应该是逐行计算的平均值,直到某个条件(即直到第 3 行我计算一个平均值,在第 3 行我开始计算另一个平均值之前),我的预期输出是:
val avg avg_sep
1 10 10 10
2 20 15 15
3 30 20 20
4 40 25 40
5 30 26 35
我知道我可以使用df.mean(axis=0) 来获取列的平均值。但是我怎样才能得到预期的输出呢?
【问题讨论】:
-
您可以使用
df["avg"] = df["val"].cumsum() / df.index来计算avg。我不确定你对avg_sep的意思。 -
avg_sep只是一个名字。基本上我想计算给定行的平均值,然后仅考虑以下行再次开始计算平均值。 -
嗯,也许您可以使用与
avg列相同的结构分段构建它?我认为:df.loc[:3, "avg_sep"] = df.loc[:3, "val"].cumsum() / np.arange(1, 4)和df.loc[4:, "avg_sep"] = df.loc[4:, "val"].cumsum() / np.arange(1, 3)会起作用,但可能会有更好/更优雅的选择 -
谢谢!您介意将其发布为答案吗?所以我可以接受!