Pandas-在保留列/索引值的同时向 DataFrame 添加缺失的日期?

2023-12-09

我有一个 pandas 数据框,其中包含日期、客户、商品以及购买的美元价值。

   date     customer   product   amt  
 1/1/2017   tim        apple       3  
 1/1/2017   jim        melon       2  
 1/1/2017   tom        apple       5  
 1/1/2017   tom        melon       4  
 1/4/2017   tim        melon       3  
 1/4/2017   jim        apple       2  
 1/4/2017   tom        melon       1  
 1/4/2017   tom        orange      4  

我试图只查看性能,但我想转发填充最小和最大日期范围内的所有日期,并为每个产品的每个客户填充

就像是:

   date     customer   product   amt  
 1/1/2017   tim        apple       3  
 1/1/2017   tim        melon       0  
 1/1/2017   tim        orange      0  
 1/1/2017   jim        melon       2  
 1/1/2017   jim        apple       0  
 1/1/2017   jim        orange      0  
 1/1/2017   tom        apple       5  
 1/1/2017   tom        melon       4  
 1/1/2017   tom        orange      0  
 1/2/2017   tim        apple       0  
 1/2/2017   tim        melon       0  
 1/2/2017   tim        orange      0  
 1/2/2017   jim        melon       0  
 1/2/2017   jim        apple       0  
 1/2/2017   jim        orange      0  
 1/2/2017   tom        apple       0  
 1/2/2017   tom        melon       0  
 1/2/2017   tom        orange      0  
 1/3/2017   tim        apple       0  
 1/3/2017   tim        melon       0  
 1/3/2017   tim        orange      0  
 1/3/2017   jim        melon       0  
 1/3/2017   jim        apple       0  
 1/3/2017   jim        orange      0  
 1/3/2017   tom        apple       0  
 1/3/2017   tom        melon       0  
 1/3/2017   tom        orange      0  
 1/4/2017   tim        melon       3  
 1/4/2017   tim        apple       0  
 1/4/2017   tim        orange      0  
 1/4/2017   jim        apple       2  
 1/4/2017   jim        melon       0  
 1/4/2017   jim        orange      0  
 1/4/2017   tom        melon       1  
 1/4/2017   tom        orange      4  
 1/4/2017   tom        apple       0  

我知道我可以根据最大和最小日期创建重新索引,但这也会使我的客户和产品值变为 0。还有其他方法可以解决此问题吗?我是不是漏掉了一个步骤或者什么?感谢您的帮助


请注意,这使用stack and unstack几次

df.set_index(['date','customer','product']).amt.unstack(-3).\
  reindex(columns=pd.date_range(df['date'].min(), 
    df['date'].max()),fill_value=0).\
      stack(dropna=False).unstack().stack(dropna=False).\
        unstack('customer').stack(dropna=False).reset_index().\
          fillna(0).sort_values(['level_1','customer','product'])
Out[314]: 
   product    level_1 customer    0
0    apple 2017-01-01      jim  0.0
12   melon 2017-01-01      jim  2.0
24  orange 2017-01-01      jim  0.0
1    apple 2017-01-01      tim  3.0
13   melon 2017-01-01      tim  0.0
25  orange 2017-01-01      tim  0.0
2    apple 2017-01-01      tom  5.0
14   melon 2017-01-01      tom  4.0
26  orange 2017-01-01      tom  0.0
3    apple 2017-01-02      jim  0.0
15   melon 2017-01-02      jim  0.0
27  orange 2017-01-02      jim  0.0
4    apple 2017-01-02      tim  0.0
16   melon 2017-01-02      tim  0.0
28  orange 2017-01-02      tim  0.0
5    apple 2017-01-02      tom  0.0
17   melon 2017-01-02      tom  0.0
29  orange 2017-01-02      tom  0.0
6    apple 2017-01-03      jim  0.0
18   melon 2017-01-03      jim  0.0
30  orange 2017-01-03      jim  0.0
7    apple 2017-01-03      tim  0.0
19   melon 2017-01-03      tim  0.0
31  orange 2017-01-03      tim  0.0
8    apple 2017-01-03      tom  0.0
20   melon 2017-01-03      tom  0.0
32  orange 2017-01-03      tom  0.0
9    apple 2017-01-04      jim  2.0
21   melon 2017-01-04      jim  0.0
33  orange 2017-01-04      jim  0.0
10   apple 2017-01-04      tim  0.0
22   melon 2017-01-04      tim  3.0
34  orange 2017-01-04      tim  0.0
11   apple 2017-01-04      tom  0.0
23   melon 2017-01-04      tom  1.0
35  orange 2017-01-04      tom  4.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas-在保留列/索引值的同时向 DataFrame 添加缺失的日期? 的相关文章

随机推荐

  • 如何使用正则表达式只替换括号内的内容?

    如何使用正则表达式只替换括号内的内容 String This is my string 123 我想用 456 代替 123 Desired String This is my string 456 我的尝试 regex re sub re
  • 从 PowerShell 的列表中选择一个项目

    我正在使用 PowerShell 进行 api 调用 我得到 3 个输出作为调用结果 ID 1 Name Abc Location London 我想将 ID 传递给一个新变量 我怎样才能在powershell中实现这一点 谢谢 您可以使用
  • 使用 SwiftUI ForEach 从 NSOrderedSet 获取字符串值

    Using 这个问题 答案我可以使用 ForEach 来使用从 CoreData 中的一对多关系创建的 NSOrderedSet 但是我似乎无法访问存储在 Core Data 实体中的字符串属性 我有两个 CoreData 实体 客户端和会
  • Swift 中根据属性删除数组对象

    我有一个像这样的自定义数组 我想删除学生 ID 为 4 的元素 var strNames Student id 1 name ghj Student id 4 name def Student id 9 name bkl 以经典的方式 我确
  • JSON 数据 - 已解析或“评估”

    从安全角度来看 我认为简单地对传入的 JSON 数据进行 评估 是一个严重错误 如果你得到像下面这样的数据 你就会遇到一些问题 someData function alert i m in ur code hackin ur page 我想
  • 多次具有相同键的红黑树:将集合存储在节点中还是将它们存储为多个节点?

    显然你可以做任何一个 但前者更常见 您为什么选择后者 它是如何运作的 我读到了这个 http www drdobbs com cpp stls red black trees 184410531 这让我觉得他们做到了 它说 insert a
  • R 将每日数据与刻度数据合并

    感谢您指向 na locf Darren 更新的示例和结果如下 我有报价数据 我已将其汇总到每日数据中 以便计算每日波动性 现在我已经创建了每日波动率 我想再次将每日数据与报价数据合并 但是 我怀疑由于每日数据和分时数据的索引差异 合并仍然
  • numpy读取带有复数的.csv

    堆栈溢出 我有一个包含复数的矩阵 例如 2 2982235934153075E 11 2 1179547211742553E 9i 我需要将其导入到numpy数组中 我一直在使用genfromtext file 解析我所有其他的真实值 但我
  • 发生了错误。请联系您的系统管理员。 (6632) Jasper 服务器 6.2 中出现错误

    我正在使用 Jasper 报告 TIBCO Jaspersoft Studio 6 2 0 final Jasper 服务器 JasperReports Server 社区版 v6 2 0 我将报告书模板 Jasper 报告发布到 Jasp
  • 将 CURL 转换为 URLRequest

    我正在尝试将 Swagger 给我的以下卷曲请求转换为 URLRequest curl X GET header Accept application json header Authorization key ttn account v2
  • 从系统帐户为用户创建 ServiceAccountCredential

    我使用以下代码通过系统登录 域范围内的身份验证 代表用户进行操作 我发现实现此目的的唯一示例使用反射来设置用户 我知道这不是完成此任务的正确方法 所以我想知道是否有人可以帮助我举一个如何解决此问题的示例 ServiceAccountCred
  • 如何在 Python 中的类之间创建共享类属性

    我昨天问过这个问题 但我把我的问题写得太糟糕了 当我意识到我输入的内容时 所有回复都是针对我没有的另一个措辞错误的问题的解决方案 抱歉上次的愚蠢输入 我有两个类 我希望它们能够共享一个公共列表 而不必将其作为参数传递 我还想创建一个方法来打
  • 在 Angular.js 中的控制器之间共享资源

    简单的问题 我有这个资源 var Company resource company id id id 我想在不同的控制器之间共享 现在 我正在复制粘贴内容 但我仍然没有达到我想要添加更多代码并使用的程度角度共享服务 还有其他选择吗 只需放入
  • 在 Python 中获取从周日开始的周数时出现问题?

    我正在使用 Python 3 6 并且在获取从周日开始的周数时遇到问题 如何在 Python 中找到从周日开始的周数 t1 datetime datetime now t1 strftime U 例如 关于09 16 2018 Sunday
  • 如何在 React 中使用 Materialize CSS 的 sideNav?

    我正在使用 React 开发一个应用程序 我想使用 sidenav 组件http materializecss com side nav html 问题是我收到此错误 Sidebar js 8 Uncaught TypeError WEBP
  • python 中的符号“=”和“==”是什么意思?

    什么时候应该使用符号 什么时候只使用符号 就足够了 python 中的符号 是什么意思 两周前我开始了 python 编码 这两个符号有时让我感到困惑 有几次当我使用 时 我会收到一条错误消息 我将其更改为 后 不再有错误消息 看来当 起作
  • 安装 Window Azure 存储包时出现问题

    我在安装 Azure 存储时遇到以下问题 通过 Nuget 打包 Attempting to resolve dependency Microsoft Data OData 5 6 2 Attempting to resolve depen
  • 高度:100% VS 最小高度:100%

    我用这个css设置一个 div 至最大高度 谁能给我一个一般性的答案 两者有什么区别height 100 and min height 100 这是 W3C 的解释 link The following algorithm describe
  • 使用扭矩稳定气垫船刚体直立

    我目前正在创建一款涉及悬停自行车的游戏 当自行车与物体碰撞时 它的角度会自然改变 我希望创建某种方法让它趋于 0 这是我尝试过的 if hoverbike rotation x 0 hoverbike rotation z 0 hoverb
  • Pandas-在保留列/索引值的同时向 DataFrame 添加缺失的日期?

    我有一个 pandas 数据框 其中包含日期 客户 商品以及购买的美元价值 date customer product amt 1 1 2017 tim apple 3 1 1 2017 jim melon 2 1 1 2017 tom a