繁体   English   中英

获取 Pandas 中每一天的上个月平均值

[英]Get previous month average for each day in Pandas

我正在尝试获取过去 30 天的平均值。

这意味着对于第 3 行,它将是 2017-12-15 00:02:00 和 2018-01-13 00:03:00 1360.618915 之间的平均收盘价。 到目前为止,我创建了名为 minusMonth 和 plusDay 的帮助栏目。

结果应该是减月和加日之间收盘价的平均值。 但是现在它为每个时期计算相同的值

gData['result']=gData[(gData['Local time']>gData['minusMonth']) & (gData['Local time']<gData['plusDay'])]['Close'].mean()

Local time  Close   minusMonth  plusDay result
0   2018-01-12 00:00:00 1323.149    2017-12-15 00:00:00 2018-01-13 00:00:00 1360.618915
1   2018-01-12 00:01:00 1322.958    2017-12-15 00:01:00 2018-01-13 00:01:00 1360.618915
2   2018-01-12 00:02:00 1322.951    2017-12-15 00:02:00 2018-01-13 00:02:00 1360.618915
3   2018-01-12 00:03:00 1322.821    2017-12-15 00:03:00 2018-01-13 00:03:00 1360.618915
4   2018-01-12 00:04:00 1322.801    2017-12-15 00:04:00 2018-01-13 00:04:00 1360.618915
... ... ... ... ... ...
1172095 2020-04-04 23:55:00 1617.048    2020-03-07 23:55:00 2020-04-05 23:55:00 1360.618915
1172096 2020-04-04 23:56:00 1617.048    2020-03-07 23:56:00 2020-04-05 23:56:00 1360.618915
1172097 2020-04-04 23:57:00 1617.048    2020-03-07 23:57:00 2020-04-05 23:57:00 1360.618915
1172098 2020-04-04 23:58:00 1617.048    2020-03-07 23:58:00 2020-04-05 23:58:00 1360.618915
1172099 2020-04-04 23:59:00 1617.048    2020-03-07 23:59:00 2020-04-05 23:59:00 1360.618915
1172100 rows × 9 columns

当我使用文本而不是列引用时,它可以工作。

[IN] gData[(gData['Local time']>'2018.05.20') & (gData['Local time']<'2018.06.20')]['Close'].mean()
[OUT]1294.6491271981902

这几天我一直卡住,希望有人能帮忙。

You can use lambda function to apply on the entire dataframe with axis = 1 since it should be applied to every row of the dataframe.

df['result'] = df.apply(lambda x: df[(x['Local time']>df['minusMonth']) & (x['Local time']<df['plusDay'])]['Close'].mean(), axis = 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM