【问题标题】:Pandas Pivot_Table grouped valuesPandas Pivot_Table 分组值
【发布时间】:2018-08-14 03:33:47
【问题描述】:

我在 CSV (Dataset) 上有一个大型数据集。我想创建一个 pd.pivot_table 以按邮政编码汇总数据,但是,我的数据具有共享相同邮政编码的行。

df = pd.read_csv('15zpallagi.csv')
df['A00100'] = df['A00100'].map('{:,.2f}'.format)
df.pivot_table(values='A00100', index='zipcode', aggfunc='sum')

当我运行上面的代码来创建一个 pivot_table 时,值列包含多个值,就像它堆叠在具有多个值的总和上一样。

但是,如果运行以下代码,我会得到相同的值,但格式可以理解。

df.pivot_table(values='A00100', index='zipcode',columns='agi_stub', aggfunc='sum')

如何创建一个只添加列 A00100 并按邮政编码为我提供总计的数据透视表?

【问题讨论】:

  • 欢迎来到 Stack Overflow。请不要包含指向数据或输出图像的链接。相反,使用示例数据和预期输出创建一个minimal reproducible example,这代表您在数据中看到的问题。 (通常您只需要提供您正在使用的数据的一小部分来证明问题 - 甚至是反映实际数据质量的虚假数据,以防您的数据敏感或无法共享。)这将使您更容易为您提供帮助,而且这也是确保您的问题将来对其他人清楚的好方法(链接可能会断开)。

标签: python pandas pivot-table


【解决方案1】:

您可能会看到这些不一致之处,因为这一行 df['A00100'] = df['A00100'].map('{:,.2f}'.format) 正在将您的 A00100 列转换为字符串类型而不是浮点数。

注释掉第二行,然后再试一次,看看是否能解决问题。

如果您需要将数字格式化为仅显示 2 位小数,请在所有转换后执行此操作。

如果您出于某些其他原因(重要数字等)进行舍入,请使用 Dataframe.round 函数而不是字符串格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    相关资源
    最近更新 更多