Python Pandas groupby和qcut在0.14.1中不起作用

时间:2014-08-18 22:14:02

标签: python pandas

我想按组分组观察并将bin分配放回数据帧:

In [60]: df = pd.DataFrame({'x': np.random.rand(20), 'grp': ['a'] * 10 + ['b'] * 10})

In [61]: df['y'] = df.groupby('grp')['x'].transform(pd.qcut, 3)
Traceback (most recent call last):

  File "<ipython-input-61-fe2f09d0bbe2>", line 1, in <module>
    df.groupby('grp')['x'].transform(pd.qcut, 3)

  File "C:\Python\python-2.7.6.amd64\lib\site-packages\pandas\core\groupby.py", line 2286, in transform
    result[indexer] = res

ValueError: could not convert string to float: (0.352, 0.784]

上面的代码曾经在0.13中工作,我相信,但现在它似乎不适用于0.14.1。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这是一个解决方法,将qcut创建的分类包装在一个系列中。

df['y'] = df.groupby('grp')['x'].apply(lambda x: pd.Series(pd.qcut(x,3), index=x.index))