我有一个大型数据框和一个小型数据框,我想加入其中。小数据帧保持与组中较大数据帧中的值范围对应的最大每周值。我想将每组每周的最大值加入到大框架中。
大框架:
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
答案 0 :(得分:2)
您希望使用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