相关疑难解决方法(0)

Pandas TimeGrouper on multiindex

我有一个multiIndex pandas数据帧,其中第一级索引是一个组,第二级索引是时间.我想要做的是,在每个组中,采用日内观察的平均值重新采样到每日频率.

import pandas as pd
import numpy as np

data = pd.concat([pd.DataFrame([['A']*72, list(pd.date_range('1/1/2011', periods=72, freq='H')), list(np.random.rand(72))], index = ['Group', 'Time', 'Value']).T,
                  pd.DataFrame([['B']*72, list(pd.date_range('1/1/2011', periods=72, freq='H')), list(np.random.rand(72))], index = ['Group', 'Time', 'Value']).T,
                  pd.DataFrame([['C']*72, list(pd.date_range('1/1/2011', periods=72, freq='H')), list(np.random.rand(72))], index = ['Group', 'Time', 'Value']).T],
                  axis = 0).set_index(['Group', 'Time'])
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的:

daily_counts = data.groupby(pd.TimeGrouper('D'), level = ['Time']).mean()
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'MultiIndex'
Run Code Online (Sandbox Code Playgroud)

不知道怎么解决这个问题?

python pandas

8
推荐指数
1
解决办法
2927
查看次数

使用包含多索引的时间序列重新采样pandas数据帧

从创建似乎与此问题重复的内容道歉.我的数据框形状或多或少类似于下面的数据框:

df_lenght = 240
df = pd.DataFrame(np.random.randn(df_lenght,2), columns=['a','b'] )
df['datetime'] = pd.date_range('23/06/2017', periods=df_lenght, freq='H')

unique_jobs = ['job1','job2','job3',]
job_id = [unique_jobs for i in range (1, int((df_lenght/len(unique_jobs))+1) ,1) ]
df['job_id'] = sorted( [val for sublist in job_id for val in sublist] )

df.set_index(['job_id','datetime'], append=True, inplace=True)
Run Code Online (Sandbox Code Playgroud)

print(df[:5]) 收益:

                                     a         b
  job_id datetime                               
0 job1   2017-06-23 00:00:00 -0.067011 -0.516382
1 job1   2017-06-23 01:00:00 -0.174199  0.068693
2 job1   2017-06-23 02:00:00 -1.227568 -0.103878
3 job1   2017-06-23 03:00:00 -0.847565 -0.345161
4 job1   2017-06-23 04:00:00 …
Run Code Online (Sandbox Code Playgroud)

python grouping multi-index pandas

5
推荐指数
2
解决办法
2313
查看次数

在 pandas 数据帧中插入多索引

我需要插入多索引数据帧:

例如:

这是主要数据框:

a    b    c    result
1    1    1    6
1    1    2    9
1    2    1    8
1    2    2    11
2    1    1    7
2    1    2    10
2    2    1    9
2    2    2    12
Run Code Online (Sandbox Code Playgroud)

我需要找到以下结果:

1.3    1.7    1.55    
Run Code Online (Sandbox Code Playgroud)

到目前为止我一直在做的是为每个索引分别附加一个 pd.Series 和 NaN 。

如你看到的。这似乎是一种非常低效的方式。

如果有人能让我充实,我会很高兴。

PS我花了一些时间查看SO,如果答案在那里,我错过了:

使用插值填充多索引 Pandas DataFrame

在 Pandas 多重索引中重新采样

pandas 多索引数据帧,缺失值的 ND 插值

使用插值填充多索引 Pandas DataFrame

算法:

阶段1:

a    b    c    result
1    1    1    6
1    1    2    9
1    2 …
Run Code Online (Sandbox Code Playgroud)

python interpolation python-3.x pandas

5
推荐指数
1
解决办法
2953
查看次数