Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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_Time Series_Dataframe - Fatal编程技术网

Python 按整数天数计算熊猫的滚动平均数

Python 按整数天数计算熊猫的滚动平均数,python,pandas,time-series,dataframe,Python,Pandas,Time Series,Dataframe,我从csv中获取了一些数据,并将其放入数据框中: from pandas import read_csv df = read_csv('C:\...', delimiter = ',', encoding = 'utf-8') df2 = df.groupby(['i-j','day'])['i-j'].agg({'count'}) 我想计算每个“I-j”的七天移动平均数。首先,我想我需要将计数为零的天数添加到表中。有没有一种简单的方法可以通过修改上面的代码来实现这一点?换句话说,我希望丢失

我从csv中获取了一些数据,并将其放入数据框中:

from pandas import read_csv
df = read_csv('C:\...', delimiter = ',', encoding = 'utf-8')
df2 = df.groupby(['i-j','day'])['i-j'].agg({'count'})

我想计算每个“I-j”的七天移动平均数。首先,我想我需要将计数为零的天数添加到表中。有没有一种简单的方法可以通过修改上面的代码来实现这一点?换句话说,我希望丢失的值计算为0

然后,我需要在数据框中添加另一列,用于计算前七天每个I-j的平均计数。为了使用一些滚动统计函数,我是否需要将天数转换为熊猫识别为日期值的值?或者我可以更改“日期”列的类型并继续


非常感谢

可能有更好的方法来实现这一点,但是考虑到您的起始数据帧
df2
,以下方法应该可以工作

首先重新索引df2,用零填充缺失的天数:

new_index = pd.MultiIndex.from_product([df2.index.get_level_values(0).unique(), range(31)])
df2 = df2.reindex(new_index, fill_value=0)
(我假设您需要31天,但您可以根据需要进行更改。)

现在,如果您
unstack
此重新编制索引的数据帧并进行转置,则会有一个数据帧,其中每列都是
i-j
的条目,并包含每天的计数:

df2.unstack().T
您可以计算此数据帧的滚动平均值:

rm = pd.rolling_mean(df2.unstack().T, 7)
要完成此操作,您可以
stack
此滚动帧意味着恢复原始重新索引的形状
df2

rm.T.stack(dropna=False)

让我们看看你到目前为止都做了些什么。似乎reindex(新索引,填充值=0)正在将count列中的所有内容设置为0。df2下面的代码中的ie与上面的相同,而df3每天都有一个条目,但每个地方的计数都为0
code df2=df.groupby(['i-j','day'])['i-j'].agg({'count'})new_index=pd.MultiIndex.from_product([df2.index.get_level_values(0).unique(),range(30)]df3=df2.reindex(new_index,fill_value=0)
Hmmm-除非现有数据框中的索引都不在
new_index
中,否则不会发生这种情况。也许
day
列包含字符串而不是整数?这正是问题所在。强制日期列为整数可以解决此问题。再次感谢