带fstring的Pandas的移动平均值

2024-09-28 17:25:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我如何计算f弦柱的滚动平均值? 通常是:

df.columns=['x','y']
rollingaverage = df.y.rolling(window=6).mean()

如果我使用f-string,我如何实现这一点?这不起作用:

    concatted  apple_y  banana_y    date         apple banana
  apple_bana  0.500      2         2010-02-20    True True   
       apple  0.400      3         2010-02-10    True False
      banana  0.530      4         2010-01-12    False  True   
       ...
fruits= ['apple', 'banana']
for fruit in fruits:
    selected_rows = df[ df[ fruit ] == True ]
    df[f'{fruit}_rollingaverage'] = selected_rows.[f'{fruit}_y'].rolling(window=6).mean()

Tags: columnsfalsetrueappledfwindowmeanrows
1条回答
网友
1楼 · 发布于 2024-09-28 17:25:30

你的代码基本上是好的。你好像有几个打字错误。下面的工作(请注意,我将窗口的大小更改为1,以便为这个小数据集获得一些有意义的结果)

data = """    concatted  apple_y  banana_y    date         apple banana
  apple_bana  0.500      2         2010-02-20    True True   
       apple  0.400      3         2010-02-10    True False
      banana  0.530      4         2010-01-12    False  True   
"""
df = pd.read_csv(StringIO(data), sep = "\s+")

fruits= ['apple', 'banana']
for fruit in fruits:
    selected_rows = df[ df[ fruit ] == True ]
    df[f'{fruit}_rollingaverage'] = selected_rows[f'{fruit}_y'].rolling(window=1).mean()

print(df)

输出为:

    concatted  apple_y  banana_y        date  apple  banana  apple_rollingaverage  banana_rollingaverage
0  apple_bana     0.50         2  2010-02-20   True    True                   0.5                    2.0
1       apple     0.40         3  2010-02-10   True   False                   0.4                    NaN
2      banana     0.53         4  2010-01-12  False    True                   NaN                    4.0

相关问题 更多 >