Python 如何使用另一个数据帧对数据帧进行分组?

Python 如何使用另一个数据帧对数据帧进行分组?,python,pandas,Python,Pandas,这似乎很容易做到,但我不能让它工作。下面是一个简短的例子: import pandas as pd import numpy as np # Creating a DataFrame with a timeseries index and random data in 5 columns: ts = pd.date_range('2016-12-05', periods=180, freq='T') df = pd.DataFrame(np.random.rand(len(ts), 5), c

这似乎很容易做到,但我不能让它工作。下面是一个简短的例子:

import pandas as pd
import numpy as np

# Creating a DataFrame with a timeseries index and random data in 5 columns:
ts = pd.date_range('2016-12-05', periods=180, freq='T')
df = pd.DataFrame(np.random.rand(len(ts), 5), columns=[0,1,2,3,4], index=ts)

# Creating a `grouper` DataFrame, because don't want to change columns in `df`:
grouper = pd.DataFrame({'doy' : df.index.dayofyear,
                        'hr'  : df.index.hour}, index=df.index)
grouper['pd'] = pd.cut(grouper['hr'], bins=range(0, 25, 4), right=False)



如果有办法,我如何使用另一个数据帧对一个数据帧进行分组


工作,但不是解决方案: 请注意,这是可行的,但不是我正在寻找的解决方案:

grouper['doy-pd'] = grouper[['doy', 'pd']].apply(lambda x: '{0}-{1}'.format(x['doy'],x['pd']), axis=1)
df.groupby(grouper['doy-pd'])
因为它在
groupby()之后不提供
multi-index
。apply()


注 该问题是针对
pandas 0.19.0
的。升级到
0.19.1
后,以下功能正常:

df.groupby([grouper['doy'], grouper['pd']])
而且,这是一个好消息


结束问题,因为这是一个特定于版本的错误。

您使用的是哪个熊猫版本?我没有在
0.19.1
@Psidom中收到错误,您的代码是什么?我在0.19.0上。如果升级解决了问题,也许我应该结束这个问题,因为问题将是一个bug而不是编程问题…
df.groupby([grouper['doy',grouper['pd']])。mean()
不会给我错误。顺便说一句,我在使用Python3.5。我在使用Python3.5.2。。。它在升级后工作,所以结束问题,并附上注释。谢谢@Psidom!我投票结束这个问题,因为它是由特定版本的bug引起的。升级熊猫解决了这个问题。
# Another way:
df.groupby((grouper['doy'], grouper['pd']))
# Or equivalently:
df.groupby([grouper['doy'], grouper['pd']])
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
...
AttributeError: 'tuple' object has no attribute 'append'
grouper['doy-pd'] = grouper[['doy', 'pd']].apply(lambda x: '{0}-{1}'.format(x['doy'],x['pd']), axis=1)
df.groupby(grouper['doy-pd'])
df.groupby([grouper['doy'], grouper['pd']])