python - 使用 pivot_table 创建的边距存在 Period 数据类型的问题
问题描述
我有一个包含三列的大型(+10m 行)数据框:销售日期(dtype: datetime64[ns]
)、客户姓名和每位客户的销售额。销售日期包括表格中的日、月和年yyyy-mm-dd
(即2019-04-19)。我发现了 pandasto_period
函数并喜欢使用period[A-MAR]
dtype。由于营业年度(三月结束)与日历年不同,这正是我所寻找的。使用该to_period
功能,我可以将相应的销售日期分配给正确的营业年度,同时避免创建包含附加信息的新列。
我将日期列转换如下:
df_input['Date'] = pd.DatetimeIndex(df_input['Date']).to_period("A-MAR")
现在,当我使用pivot_table
聚合数据并设置margins=True
. 返回输出表中的aggfunc
正确值。但是,最后一行中的结果(总值,由边距创建)是错误的,NaN
如图所示(或者在我的情况下,我设置为 0 fill_value = 0
)。我使用的功能:
df_output = df_input.pivot_table(index="Customer",
columns = "Date",
values = "Sales",
aggfunc ={"Sales": np.sum},
fill_value = 0,
margins= True)
当我不将日期转换为期间而是使用简单的年份(整数)时,边距计算正确,并且在数据透视输出表的最后一行中没有出现 NaN。
我在整个互联网上搜索,但找不到有效的解决方案。我想继续使用 period 数据类型,只需要正确计算边距。我希望有人可以在这里帮助我。谢谢!
解决方案
推荐阅读
- android - 如何使用回收站视图进行自定义抽屉布局?
- java - 异步批量插入/更新表。Spring MVC,Java 8(或更高版本,Java 12)
- php - wordpress max_user_connections 错误脚本优化
- django - 在 Django Graphene 中创建或更新更新多对多关系
- python-2.7 - TypeError:lowerb 不是 numpy 数组,也不是标量
- sql-server - 将值存储在我的数据库中的表中,并在数据网格中显示结果
- django - 如何运行我的 django 项目之外的 Object_detection_image.py?
- r - 来自 bookdown 的 render_book() 的 enc2utf8 问题
- amazon-web-services - Nodejs AWS Textract 不适用于 lambda
- python - 将天数添加到 PySpark Dataframe 中的数组内的元素