【发布时间】:2019-06-25 22:25:24
【问题描述】:
给定以下数据集作为 pandas 数据框 df:
index(as DateTime object) | Name | Amount | IncomeOutcome
---------------------------------------------------------------
2019-01-28 | Customer1 | 200.0 | Income
2019-01-31 | Customer1 | 200.0 | Income
2019-01-31 | Customer2 | 100.0 | Income
2019-01-28 | Customer2 | -100.0 | Outcome
2019-01-31 | Customer2 | -100.0 | Outcome
我们执行以下步骤:
grouped = df.groupby("Name", "IncomeOutcome")
sampled_by_month = grouped.resample("M")
aggregated = sampled_by_month.agg({"MonthlyCount": "size", "Amount": "sum"})
所需的输出应如下所示:
Name | IncomeOutcome | Amount | MonthlyCount
------------------------------------------------------------
Customer1 | Income | 400.0 | 2
Customer2 | Income | 100.0 | 1
Customer2 | Outcome | -200.0 | 2
最后一步表现很差,可能与Pandas Issue #20660有关 我的第一个意图是将所有 datetime 对象转换为 int64,这给我留下了如何按月对转换后的数据重新采样的问题。
对这个问题有什么建议吗?
提前谢谢你
【问题讨论】:
-
嗨 Ben,您希望获得的最终数据形式是什么?你能做一个你想要的输出的小数据框例子吗?谢谢。
-
嘿奥利,我更新了描述。我希望这能让我更清楚我想要实现的目标。 sampled_by_month 变量应该保存以日期时间对象数组作为值的组,这似乎很慢。
-
修复了输入中可能存在的错误。请确认。
-
是的,似乎是正确的。谢谢!
标签: python pandas performance numpy