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

0 投票
1 回答
1008 浏览
提问于 2025-04-18 17:43

我想把观察到的数据按组分类,然后把分类结果放回数据表里:

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 个回答

3

这里有个解决办法,就是把用 qcut 创建的分类数据包裹在一个序列里。

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

撰写回答