Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python允许将分组计算添加回数据帧_Python_Pandas - Fatal编程技术网

python允许将分组计算添加回数据帧

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

我正在练习用样本数据来学习熊猫。我从一些股票数据开始,因为它很容易处理

我有一些数据如下:

符号 日期和时间 关闭 体积 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   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)