在pivot_table中格式化整数

时间:2017-10-19 14:25:15

标签: python-3.x pandas

以下代码的输出是

import numpy, random, pandas
random.seed(10000)

sz = 1000000
pd = pandas.DataFrame({"x":random.choices(range(2), k=sz), "y":random.choices(range(3), k=sz)})
pd["values"] = 1
pd.pivot_table(index="x", columns="y", aggfunc="count", margins=True)

如下所示

       values                               
y           0         1         2        All
x                                           
0    166575.0  166726.0  166553.0   499854.0
1    166823.0  166366.0  166957.0   500146.0
All  333398.0  333092.0  333510.0  1000000.0

如何添加格式语句,以便在没有尾随.0的情况下打印计数。我不希望使用pandas.set_option来执行此操作,这可能会更改此会话中所有数据帧的行为。

1 个答案:

答案 0 :(得分:2)

我认为您可以使用astype,从列中添加参数MultiIndex删除values

df = (pd.pivot_table(index="x", 
                    columns="y", 
                    aggfunc="count", 
                    values='values',
                    margins=True)
        .astype(int))

print (df)
y         0       1       2      All
x                                   
0    166575  166726  166553   499854
1    166823  166366  166957   500146
All  333398  333092  333510  1000000

如果要为某些列应用astype ony:

df = (pd.pivot_table(index="x", 
                    columns="y", 
                    aggfunc="count", 
                    values='values',
                    margins=True)

cols = [1,2]
df[cols] = df[cols].astype(int)

print (df)
            0       1       2        All
x                                       
0    166575.0  166726  166553   499854.0
1    166823.0  166366  166957   500146.0
All  333398.0  333092  333510  1000000.0