根据另一列的平均切片添加新列

时间:2018-04-15 02:58:32

标签: python pandas

假设我有一个DataFrame

my_df = pd.DataFrame([10, 20, 30, 40, 50], columns=['col_1'])

我想添加一个新列,其中新列中每行的值是从该行开始的col_1中的值的平均值。在这种情况下,新列(让我们称之为'col_2'[30, 35, 40, 45, 50]

以下不是好代码,但它至少描述了生成值。

for i in range(len(my_df)):
    my_df.loc[i]['col_2'] = my_df[i:]['col_1'].mean()

我怎样才能以干净,惯用的方式做到这一点,而不是SettingWithCopyWarning

1 个答案:

答案 0 :(得分:2)

您可以反转列,取增量平均值,然后再将其反转。

usri2_acct_expires  := DateTimeToUnix(datetimepicker1.date);

类似的ndarray级方法可能是使用my_df.loc[::-1, 'col_1'].expanding().mean()[::-1] # 0 30.0 # 1 35.0 # 2 40.0 # 3 45.0 # 4 50.0 # Name: col_1, dtype: float64 并除以越来越多的元素。

np.cumsum