假设我有一个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
?
答案 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