我有两个长数据框,如下所示:
df1 = pd.DataFrame([[1, 1],
[2, 1],
[3, 1],
[2, 1],
[2, 2],
[3, 2],
[5, 3]], columns=['value', 'id'])
df2 = pd.DataFrame([1, 2, 3, 4])
df1
的第一列充当值,而第二列是ID
列。
我想要做的是将
df1
乘以df2
,每个ID
的第一个值乘以df2
的第一个值,第二个值乘以第二个值,依此类推。例如,对于 id=1
,我们会得到 [1x1=1, 2x2=4, 3x3=9, 4x2=8]
,对于 id=2
,我们会得到 [2x1=2, 3x2=6]
,...保证每个 ID
的值出现的长度不会超过df2
,最终结果会是这样的
1
4
9
8
2
6
5
代码
out = df1['value'].mul(df1.groupby('id').cumcount().map(df2[0]))
出
0 1
1 4
2 9
3 8
4 2
5 6
6 5
dtype: int64