【发布时间】:2016-12-05 07:37:42
【问题描述】:
我有一个 MultiIndex 系列(3 个索引),如下所示:
Week ID_1 ID_2
3 26 1182 39.0
4767 42.0
31393 20.0
31690 42.0
32962 3.0
....................................
我还有一个数据框df,其中包含上述系列中用于索引的所有列(以及更多列),我想在我的数据框df 中创建一个新列,其中包含与@987654324 匹配的值@ 和 ID_2 以及系列中的 Week - 2。
例如,对于具有ID_1 = 26、ID_2 = 1182 和Week = 3 的数据框中的行,我想匹配由ID_1 = 26、ID_2 = 1182 和Week = 1 索引的系列中的值(3- 2) 并将其放在该行的新列中。此外,我的 Series 可能不一定具有数据框所需的值,在这种情况下,我希望只有 0。
现在,我正在尝试使用:
[multiindex_series.get((x[1].get('week', 2) - 2, x[1].get('ID_1', 0), x[1].get('ID_2', 0))) for x in df.iterrows()]
但是,这非常慢并且内存占用很大,我想知道有什么更好的方法来做到这一点。
FWIW,系列是使用
创建的saved_groupby = df.groupby(['Week', 'ID_1', 'ID_2'])['Target'].median()
如果存在更好的路径来创建我正在寻找的东西,我愿意以不同的方式来做。
【问题讨论】:
标签: python pandas dataframe data-science