Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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 groupby重采样的数据帧ewm_Python_Pandas_Dataframe - Fatal编程技术网

Python groupby重采样的数据帧ewm

Python groupby重采样的数据帧ewm,python,pandas,dataframe,Python,Pandas,Dataframe,我有如下数据 有可能得到如下的指数加权平均值吗?下面的代码抛出错误 df.groupby(['name']).resample('1s')['value'].ewm(span=1).mean() 首先,您必须确保数据帧索引是一个时间序列。使用: df.index = pd.to_datetime(df['time'], format='%H:%M:%S') 然后将代码修改为: df.groupby(['name']).resample('1s')['value'].ffill().ewm(

我有如下数据

有可能得到如下的指数加权平均值吗?下面的代码抛出错误

df.groupby(['name']).resample('1s')['value'].ewm(span=1).mean()

首先,您必须确保数据帧索引是一个时间序列。使用:

df.index = pd.to_datetime(df['time'], format='%H:%M:%S')
然后将代码修改为:

df.groupby(['name']).resample('1s')['value'].ffill().ewm(span=1).mean()
调用
ewm()
之前添加
ffill()
,以便将
DatetimeIndexResamplerGroupby
对象转换为DataFrame对象,然后可以使用
ewm()
函数

测试代码和输出:

    data = {'time': ['0:00:02', '0:00:04', '0:00:06', '0:00:08'], 'name': ['n1', 'n2', 'n1', 'n2'], 'value': [10, 1000, 20, 1500]}
    df = pd.DataFrame(data)
    df.index = pd.to_datetime(df['time'], format='%H:%M:%S')
    df.groupby(['name']).resample('1s')['value'].ffill().ewm(span=1).mean()

name  time               
n1    1900-01-01 00:00:02      10.0
      1900-01-01 00:00:03      10.0
      1900-01-01 00:00:04      10.0
      1900-01-01 00:00:05      10.0
      1900-01-01 00:00:06      20.0
n2    1900-01-01 00:00:04    1000.0
      1900-01-01 00:00:05    1000.0
      1900-01-01 00:00:06    1000.0
      1900-01-01 00:00:07    1000.0
      1900-01-01 00:00:08    1500.0
Name: value, dtype: float64