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