pandas 中的移动平均线与 f 字符串

Moving Averages In pandas with f-string

我如何计算 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()

您的代码基本没问题。好像你有几个错别字。以下作品(请注意,我将 window 的大小更改为 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