将两个 pandas 数据帧乘以索引

问题描述 投票:0回答:1

我有两个长数据框,如下所示:

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
python pandas dataframe
1个回答
0
投票

代码

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
© www.soinside.com 2019 - 2024. All rights reserved.