【发布时间】:2019-10-18 09:01:40
【问题描述】:
我有两个大型数据集,我无法通过组合两个数据框来进行聚合。我必须先对df_train 进行聚合,然后将值映射到df_test。
df_train 和 df_test 具有完全相同的 id1 和 id2,但 df_test 有更多样本。我正在计算 id1 和 id2 上的目标均值,并将其存储为字典以解决内存问题。
target_mean = df_train.groupby(['id1', 'id2'])['target'].mean().to_dict()
这是聚合的输出。键是元组对,id1 作为第一个元素,id2 作为第二个元素,值是组的目标均值。
{(0, 0): 146.45497131347656,
(1, 0): 74.86539459228516,
(2, 0): 14.551384925842285,
(3, 0): 235.5499725341797,
(4, 0): 976.5567626953125,
(5, 0): 17.894445419311523,
(6, 0): 64.06660461425781,
(7, 0): 350.33416748046875,
(7, 1): 3097.043701171875,
(8, 0): 256.92779541015625,
(9, 0): 72.7147445678711 }
如何将这些值正确映射到 id1 和 id2 列?
(有 6000 万 行数据,1449 id1 和 4 id2 值,所以速度很重要)
编辑:
df_train[['id1', 'id2']].map(target_mean)
我试过这个,但map 只支持pd.Series。
【问题讨论】:
标签: python pandas numpy data-science