很多时候(例如,对于时间序列)我需要使用一列中的所有值,直到当前行。
例如,如果我的 Dataframe 有100行,我想创建一个新列,其中每行的值是所有前面的行的(总和,平均值,乘积,[任何其他公式]),然后排除后面的行:
Row 20 = formula(all_values_until_row_20)
Row 21 = formula(all_values_until_row_21)
etc
我想问这个问题最简单的方法是:如何在不使用该特定方法的情况下为panda中的新列实现cumsum()
函数?
2条答案
按热度按时间pxiryf3j1#
如果不能使用cumsum,一种方法是引入一个新列或索引,然后应用一个lambda函数,该函数使用新列值小于当前行值的所有行。
b5buobof2#
由于没有样本数据,我使用一个假设的 Dataframe ,其中至少有一列是数字数据,没有NaN值。我将像下面这样开始计算累积和平均值。
累计和:
df['cum_sum'] = df['existing_col'].cumsum()
累积平均值:
df['cum_avg'] = df['existing_col'].cumsum() / df['index_col']
或
df['cum_avg'] = df['existing_col'].expanding().mean()
如果你能提供一个示例数据框,你可以得到更好的帮助,我相信是这样的。