Python:pandas.cut标签被忽略

时间:2020-03-25 09:55:29

标签: python pandas

我想使用pandas.cut()在pandas.DataFrame中切入一列,但是我放入labels自变量中的标签未应用。让我给你看一个例子。

我有以下数据框:

>>> import pandas as pd
>>> df = pd.DataFrame({'x': [-0.009, 0.089, 0.095, 0.096, 0.198]})
>>> print(df)
       x
0 -0.009
1  0.089
2  0.095
3  0.096
4  0.198

我这样切开x列:

>>> bins = pd.IntervalIndex.from_tuples([(-0.2, -0.1), (-0.1, 0.0), (0.0, 0.1), (0.1, 0.2)])
>>> labels = [100, 200, 300, 400]
>>> df['x_cut'] = pd.cut(df['x'], bins, labels=labels)
>>> print(df)
       x        x_cut
0 -0.009  (-0.1, 0.0]
1  0.089   (0.0, 0.1]
2  0.095   (0.0, 0.1]
3  0.096   (0.0, 0.1]
4  0.198   (0.1, 0.2]

但是,我希望数据框看起来像这样:

   id      x  x_cut
0   6  0.089    200
1   6  0.089    300
2   6  0.095    300
3   6  0.096    300
4   6  0.098    400

我想念什么?如何获得带有正确标签的数据框?

1 个答案:

答案 0 :(得分:2)

它是bug issue 21233

对我来说,像@ anky_91一样工作的是zip创建的字典的映射:

df['x_cut'] = pd.cut(df['x'], bins).map(dict(zip(bins, labels)))
print(df)
       x x_cut
0 -0.009   200
1  0.089   300
2  0.095   300
3  0.096   300
4  0.198   400