pivot_table changes data type of unrelated columns #7142
Closed
Description
When using the pivot_table command, the data type of a float64 column changes to object when I include a boolean column in the pivot table. This is unrelated to issue #713.
I'm using
python: 2.7.3.final.0
pandas: 0.13.1
For example, I've created the table below with two float64 columns a,b and one boolean column c
import pandas as pd
import numpy as np
np.random.seed(2)
x = pd.DataFrame(np.random.random((10,2)), columns=list('ab'))
x['pivot_column'] = x.a > 0.5
x['c'] = x.b > 0.5
I wish to create a pivot table, splitting on the 'pivot_column'. When using the columns a and b (both float64), the resulting table is as expected:
p2 = x.reset_index().pivot_table(rows='index',
cols='pivot_column',
values=list('ab'))
p2.info()
with output
Int64Index: 10 entries, 0 to 9
Data columns (total 4 columns):
(a, False) 6 non-null float64
(a, True) 4 non-null float64
(b, False) 6 non-null float64
(b, True) 4 non-null float64
dtypes: float64(4)<class 'pandas.core.frame.DataFrame'>
But, when I use the columns a,b,c the data type of a and b changes from float64 to object
p1 = x.reset_index().pivot_table(rows='index',
cols='pivot_column',
values=list('abc'))
p1.info()
with output
Int64Index: 10 entries, 0 to 9
Data columns (total 6 columns):
(a, False) 6 non-null object
(a, True) 4 non-null object
(b, False) 6 non-null object
(b, True) 4 non-null object
(c, False) 6 non-null object
(c, True) 4 non-null object
dtypes: object(6)<class 'pandas.core.frame.DataFrame'>
Is this a bug or is there some internal logic I don't know about (or both)?
Using unstack works as expected.
P.s. Pandas is great. Thanks for creating it! D.s.