gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:59:24 26 4
gpt4 key购买 nike

假设我有一个数据框

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

最佳答案

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

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

类似的 ndarray 级方法可能是使用 np.cumsum 并除以不断增加的元素数量。

np.true_divide(np.cumsum(my_df.col_1.values[::-1]), 
np.arange(1, len(my_df)+1))[::-1]

# array([30., 35., 40., 45., 50.])

关于python - 根据另一列的平均切片添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49838084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com