【问题标题】:Padding python pivot tables with 0用 0 填充 python 数据透视表
【发布时间】:2016-01-29 23:20:36
【问题描述】:

我有一个数据透视表,它的日期索引范围从 01-01-2014 到 12-31-2015。我希望索引的范围从 01-01-2013 到 12-31-2016 并且不知道如何通过在我的 pandas 数据框中插入一行来修改基础数据集,并在我想用作我的索引的列中插入这些日期用于数据透视表。

有没有办法在不修改基础数据集的情况下完成此操作?

【问题讨论】:

  • 能否提供生成数据透视表的代码?

标签: python python-2.7 pandas dataframe pivot-table


【解决方案1】:

我将在这里笼统地说,因为没有提供示例代码或数据。假设您的原始数据框名为df,并包含DateSales 列。

我会尝试创建一个包含从 01-01-2014 到 12-31-2015 的所有日期的列表。让我们将此列表称为dates。我还将创建一个名为sales(即sales = [])的空列表。在此工作流结束时,sales 应包含来自dt['Sales'] 的数据以及不在数据框中的日期的占位符。在您的情况下,这些占位符将是 0。在我的回答中,数据框中的列名是大写的;列表名称以小写字母开头。

接下来,我将遍历dates 并检查每个日期是否在dt['Date'] 中。列表dates 的每次迭代都将被称为date(即date = dates[i])。

  • 如果datedt['Date'] 中,我会将该日期的Sales 数据附加到sales 中。您可以通过以下命令在数据框中找到日期:df['Date']==date。因此,要将相应的 Sales 数据附加到列表中,我将使用此命令 sales.append(df[df['Date']==date]['Sales']
  • 如果date 不在dt['Date'] 中,我将在sales 中附加一个占位符(即sales.append(0)

遍历列表中的所有日期后,我将使用datessales 创建最终数据框。最终数据框应包含原始数据和原始数据中未包含的日期的占位符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    相关资源
    最近更新 更多