我有一个大的数据和一个小的数据,我想加入到一起。小数据存储与大数据按组的值范围相对应的最大每周值。我想加入每组每周的最大值到大帧。
大框架:
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
发布于 2014-08-29 17:22:38
您希望使用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
https://stackoverflow.com/questions/25572826
复制相似问题