来自groupby的多列熊猫加入

卡姆登尔

我有一个大数据框和一个小数据框,我想将它们合并在一起。小数据框按组保留与较大数据框中的值范围相对应的每周最大值。我想将每周每组的最大值加入大型框架。

大框架:

L
datetime     group    value
2014-05-07   A        3 
2014-05-07   B        3 
2014-05-14   A        4 
2014-05-14   B        2 
2014-05-15   A        6 
2014-05-15   B        4 
2014-05-16   A        7 
2014-05-16   B        10

小框架:

S
weeknumber   group    maxval
1            A        3
1            B        3
2            A        7
2            B        10

请注意,这些是假设的星期值,实际值将对应于一年中的星期数(在52个星期中)。

要计算小框架,我们可以在日期时间上设置一个索引:

import pandas as pd
L.index = pd.to_datetime(L.datetime)

我们可以按组和周进行分组,如下所示:

week = L.groupby([(lambda x : x.week),'group'], as_index=False)

计算每周最高额很简单:

weekmax = week.value.max()

这将返回小框架,这是我卡住的地方。我尝试合并数据框并执行联接,但无法使其正常工作。

编辑:这是我希望加入连接后的最终框架:

datetime     group    value    maxval
2014-05-07   A        3        3
2014-05-07   B        3        3
2014-05-14   A        4        7
2014-05-14   B        2        10
2014-05-15   A        6        7
2014-05-15   B        4        10
2014-05-16   A        7        7
2014-05-16   B        10       10
克里斯布

您要使用transform它将返回类似索引的聚合版本。因此,您可以将其直接分配回较大的框架,如下所示:

In [189]: L['maxval'] = week['value'].transform('max')

In [190]: L
Out[190]: 
              datetime group  value  maxval
datetime                                   
2014-05-07  2014-05-07     A      3       3
2014-05-07  2014-05-07     B      3       3
2014-05-14  2014-05-14     A      4       7
2014-05-14  2014-05-14     B      2      10
2014-05-15  2014-05-15     A      6       7
2014-05-15  2014-05-15     B      4      10
2014-05-16  2014-05-16     A      7       7
2014-05-16  2014-05-16     B     10      10

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档