合并数据框后如何禁用分类列值的精度?

时间:2019-07-16 12:01:13

标签: python-3.x pandas dataframe merge categories

我有4个数据框,其中有一个类别列。

d1:
ID  d1c
002 [0, 25)
004 [25, 50)

d2:
ID  d2c
002 [0, 25)
005 [0, 25)

d3:
ID  d3c
004 [25, 50)
005 [0, 25)

ID  d4c
002 [25, 50)
004 [75, 100)

d1['d1c'].value_counts()
[25, 50)     1
[0, 25)      1
Name: d1c, dtype: int64

d1.dtypes
ID         object  
d1c    category
dtype: object

我必须通过外部联接合并数据帧。因此,我将这些数据帧合并如下:

ds=[d1,d2,d3,d4]
ds_final=reduce(lambda left,right: pd.merge(left,right,on='ID',how='outer'),ds)

但是结果产生了预期的结果,但是分类列显示了不同的格式,它显示了浮点类型而不是整数。


ID  d1c            d2c           d3c            d4c
002 [0.0, 25.0)    [0.0, 25.0)   NaN            [25.0, 50.0)
004 [25.0, 50.0)   NaN           [25.0, 50.0)   [75.0, 100.0)
005 NaN            [0.0, 25.0)   [0.0, 25.0)    NaN

但是当我计算一列的唯一值时,它会将数据类型显示为int64,并且分类值的显示不精确。

ds_f['d1c'].value_counts()
[25, 50)     1
[0, 25)      1
[75, 100)    0
Name: d1c, dtype: int64

ds_f.dtypes
ID     object  
d1c    category
d2c    category
d3c    category
d4c    category
dtype: object

为什么合并数据框后更改了显示格式?我想要[0,25)格式。

0 个答案:

没有答案