Goodmorning everyone
Python 2.7.3.final.0
熊猫0.15.1
我必须转动多个值....浮动和整数...但它不起作用。 以下是一些例子
import pandas as pd
import decimal
import numpy as np
data = [[decimal.Decimal('696.00'), decimal.Decimal('1876.53'), decimal.Decimal('2578.53'), 518L, 2008, 'Ala'], [decimal.Decimal('705.52'), decimal.Decimal('4534.33'), decimal.Decimal('5246.33'), 525L, 2007, 'Ala']]
headers = ['A', 'B', 'C', 'D', 'E', 'F']
df = pd.DataFrame(data, columns=headers)
columns = ['E']
rows = ['F']
value = ['A', 'B'] # A float, B float
pivot_df = df.pivot_table(columns=columns,
index=rows,
values=value,
margins=True,
aggfunc=np.sum)
结果
A B
E 2007 2008 All 2007 2008 All
F
Ala 705.52 696.00 1401.52 4534.33 1876.53 6410.86
All 705.52 696.00 1401.52 4534.33 1876.53 6410.86
所有权利!
value = ['A', 'D'] # A float, D int
pivot_df = df.pivot_table(columns=columns,
index=rows,
values=value,
margins=True,
aggfunc=np.sum)
结果
D
E 2007 2008 All
F
Ala 525 518 1043
All 525 518 1043
Dosen没工作.....
和想法?
打败问候。
曼努埃尔
答案 0 :(得分:1)
这可能是一种解决方法或解释,而不是答案,但是FWIW。
我怀疑你并不是真的需要存储任何小数,只是浮点数(实际上你在你的问题中将小数类型称为浮点数,但它们不是同一个东西,试试{ {1}})。我建议首先从浮动开始,或转换它们:
df.info()
十进制类型存储为对象。除非你真的需要这样做,浮动将更快,更容易使用。如果你这样做是因为你想要看到两个小数位,只需使用浮点数上的格式,尽管pandas默认格式选择通常都是你想要的。如果您使用ipython,请查看value=['A','D']
df[value] = df[value].astype(float)
魔法,它允许您指定浮动的默认格式。
现在,它运作良好:
%precision
现在,所有这些都说,我没有看到你所做的任何问题,这可能是熊猫的一个错误。同时,我会坚持用更简单的方式(浮点数而不是小数),除非你真的有理由使用小数类型,然后问题不会出现。