python允许将分组计算添加回数据帧
我正在练习用样本数据来学习熊猫。我从一些股票数据开始,因为它很容易处理 我有一些数据如下: 符号 日期和时间 关闭 体积 XOM 2021-04-13 13:00:00 56.5 10000 XOM 2021-04-13 13:01:00 57.5 10000 XOM 2021-04-13 13:02:00 56.25 10000 XOM 2021-04-13 13:03:00 58.5 10000 正链法: 现在,如果您打印python允许将分组计算添加回数据帧,python,pandas,Python,Pandas,我正在练习用样本数据来学习熊猫。我从一些股票数据开始,因为它很容易处理 我有一些数据如下: 符号 日期和时间 关闭 体积 XOM 2021-04-13 13:00:00 56.5 10000 XOM 2021-04-13 13:01:00 57.5 10000 XOM 2021-04-13 13:02:00 56.25 10000 XOM 2021-04-13 13:03:00 58.5 10000 正链法: 现在,如果您打印quote\u数据,您将获得所需的输出: symbol da
quote\u数据
,您将获得所需的输出:
symbol date_time close volume sma
0 XOM 2021-04-13 13:00:00 56.50 10000 NaN
1 XOM 2021-04-13 13:01:00 57.50 10000 NaN
2 XOM 2021-04-13 13:02:00 56.25 10000 NaN
3 XOM 2021-04-13 13:03:00 58.50 10000 NaN
解释:
quote_data['sma']=quote_data.groupby("symbol")["close"].rolling(window=5, center=False).mean()
上面的代码返回一个具有多索引的序列
symbol
XOM 0 NaN
1 NaN
2 NaN
3 NaN
您可以使用.index
属性对其进行交叉验证:
quote_data.groupby("symbol")["close"].rolling(window=5, center=False).mean().index
#output of above code
MultiIndex([('XOM', 0),
('XOM', 1),
('XOM', 2),
('XOM', 3)],
names=['symbol', None])
因此,我们链接了droplevel()
方法,并将0
作为一个参数传递,以便它删除多索引的第0级。因此,该系列现在只有一个索引
所以现在你的系列看起来像
0 NaN
1 NaN
2 NaN
3 NaN
现在,如果我们检查序列的索引:
quote_data.groupby("symbol")["close"].rolling(window=5, center=False).mean().droplevel(0).index
#output of above code
Int64Index([0, 1, 2, 3], dtype='int64')
最后,我们使用以下代码将其分配给您的数据帧:
quote_data.groupby("symbol")["close"].rolling(window=5, center=False).mean().droplevel(0).index
#output of above code
Int64Index([0, 1, 2, 3], dtype='int64')
quote_data['sma']=quote_data.groupby("symbol")["close"].rolling(window=5, center=False).mean().droplevel(0)