首页 > 解决方案 > 计算 Pandas Dataframe 的整列

问题描述

以下问题:我想用熊猫计算一个特定行的长期平均值。我让它运行了,但它似乎真的很慢,我认为应该有更好的解决方案。

我有一个名为“Mean_df”的 pd.df,可能如下所示:

Index    Day1     Day2    Day3     Day4
1          1       2        2        1
2          3       5        4        4 
3          9       2        5        0

我想创建一个新的 DF,它获取截至今天每一行的平均值,例如,对于第 1 行,它看起来像这样:

    Day1   Day2   Day3   Day4
1    1      1.5   2.66   1.5 

目前,我正在使用以下代码并且它正在工作,就像提到的那样慢。

LTM = pd.DataFrame(None, index = Mean_df.index, columns = Mean_df.columns)
for row in range(LTM.shape[0]):
  for col in range(LTM.shape[1]):
    LTM.iloc[row,col] = Mean_df.iloc[row,0:col].mean()

如您所见,我正在遍历每一行和每一列。

我认为可能有可能在不遍历所有行的情况下计算整个列?

标签: pythonpandas

解决方案


按列使用DataFrame.expanding,然后mean

df = df.expanding(axis=1).mean()
print (df)
   Day1  Day2      Day3  Day4
1   1.0   1.5  1.666667   1.5
2   3.0   4.0  4.000000   4.0
3   9.0   5.5  5.333333   4.0

推荐阅读