使用 groupby 聚合 pandas 数据框,然后使用 apply.... 但是如何将输出添加回原始数据框?

Aggregating a pandas dataframe using groupby, then using apply.... but how to then add the output back into original dataframe?

我有一些数据具有 4 个感兴趣的特征:account_idlocation_iddate_fromdate_to。每个条目对应于客户帐户与特定位置相关联的时间段。

有几对 account_idlocation_id 有多个条目,日期不同。这意味着客户与该位置关联的时间更长,由多个连续条目涵盖。

所以我想创建一个额外的列,其中包含客户与给定位置关联的总时间长度。我可以使用 groupbyapply 为每一对计算这个(见下面的代码)..这工作正常但我不明白如何将它添加回原始数据帧作为新专栏。

lengths = non_zero_df.groupby(['account_id','location_id'], group_keys=False).apply(lambda x: x.date_to.max() - x.date_from.min())

谢谢

我认为 Mephy 是对的,这可能应该转到 Whosebug。

您将遇到形状不兼容的问题,因为分组结果中的条目将少于原始 table 中的条目。您需要对原始 table 和结果执行相当于 SQL 左外连接的等效操作,并且总长度会在新列中多次显示 - 每次你有一个相等的 (account_id, location_id) 对,你将在新列中具有相同的值。 (这不一定有什么问题,但是如果人们试图总结新专栏,它可能会导致问题,例如)

查看 pandas.DataFrame.join(您也可以使用合并)。您需要在 (account_id、location_id) 上将旧的 table 与结果连接起来,作为左(或外部)连接。