【发布时间】:2019-10-08 15:47:52
【问题描述】:
我正在尝试创建一个数据透视表来计算表单的数量以及该计数的总和、平均值和中位数。但是,Forms dtype 是分类的,我不能对非数字值使用均值和中值函数。
我想使用“表单类型”:计数作为我的聚合值。
如果我将平均值包含在第一个 aggfunc 中,我会收到此错误
DataError: No numeric types to aggregate
有没有办法在数据透视表中嵌套 aggfuncts 或在创建数据透视表时更改 dtype?
我尝试过使用 .astype(int) 但我似乎无法弄清楚该函数的语法。
下面的虚拟代码并不完全准确,但我可以继续努力。
df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo", "bar", "bar", "bar", "bar"],
"B": ["one", "one", "one", "two", "two", "one", "one", "two", "two"],
"C": ["105319", "1271075", "84565", "84354", "54835", "81638", "1282224", "41856", "78987"],
"Form Type": ["144", "D", "D/A", "144", "D", "D", "D", "S-1","D"]})
table = pd.pivot_table(df, columns = ['Form Type'],
index=['A', 'B', 'C'],
fill_value =' ',
aggfunc={'Form Type': ['count']})
输出看起来与此类似
【问题讨论】:
-
如果您可以提供最小的虚拟代码,我们可以为您提供更好的帮助。 5-10 条记录应该可以工作。
-
@JeromeMontino 是您所需要的输出,还是您事先需要代码?
-
您应该定义
values即您实际想要聚合的列。 pandas.pydata.org/pandas-docs/stable/reference/api/… -
包含一个您希望输出外观的示例可能会有所帮助。
标签: python pandas pivot-table