以下代码的输出是
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
来执行此操作,这可能会更改此会话中所有数据帧的行为。
答案 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