我想按组分组观察并将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。有什么想法吗?
答案 0 :(得分:3)
这是一个解决方法,将qcut
创建的分类包装在一个系列中。
df['y'] = df.groupby('grp')['x'].apply(lambda x: pd.Series(pd.qcut(x,3), index=x.index))