考虑以下合成示例:
import pandas as pd
import numpy as np
np.random.seed(42)
ix = pd.date_range('2017-01-01', '2017-01-15', freq='1H')
df = pd.DataFrame(
{
'val': np.random.random(size=ix.shape[0]),
'cat': np.random.choice(['foo', 'bar'], size=ix.shape[0])
},
index=ix
)
生成如下表格:
^{pr2}$现在,我要计算每个类别和日期的实例数和平均值。在
下面的groupby
,几乎是完美的:
df.groupby(['cat',df.index.date]).agg({'val': ['count', 'mean']})
返回:
val
count mean
cat
bar 2017-01-01 16 0.437941
2017-01-02 16 0.456361
2017-01-03 9 0.514388...
这个问题是,第二级索引变成了字符串,而不是date
。第一个问题:为什么会发生?我怎样才能避免呢?在
接下来,我尝试了groupby
和{
df.groupby('cat').resample('1d').agg({'val': 'mean'})
在这里,索引是正确的,但是我无法同时运行mean
和count
聚合。这是第二个问题:为什么
df.groupby('cat').resample('1d').agg({'val': ['mean', 'count']})
不起作用?在
最后一个问题为索引获取聚合(使用两个函数)视图的方法是什么?在
对于第一个问题,需要转换成
datetime
s,不带时间like:。。。因为
^{pr2}$date
s是python对象:第二个问题-在我看来,这是错误还是尚未实现,因为只在
agg
中使用一个函数名:但是与^{cd4>}一起工作old way:
相关问题 更多 >
编程相关推荐