首页 > 解决方案 > 将两个具有相同列名但索引不同的数据框相乘

问题描述

我有两个数据框,一个带有数据,一个带有预测假设列表。列名对应,但索引级别不对应(根据设计)。请告诉我如何将 df1 中的 A、B 和 C 列乘以 df2 中的相关列,如下面的示例所示,并且原始数据帧的其余部分(又名 D 列)完好无损。谢谢!

df1list=[1,2,3,4,5,6,7,8,9,10]
df2list=[2017]
df = pd.DataFrame(np.random.randint(0,100,size=(10, 4)), columns=list('ABCD'), index=list(df1list))
df2 = pd.DataFrame(np.random.randint(1,4,size=(1, 3)), columns=list('ABC'), index=list(df2list))

标签: pythonpandasdataframe

解决方案


>>> df[['A','B','C']] * df2.values

      A    B    C
1    81  168  116
2    21    8    6
3   147  108   52
4    54   64  114
5    48   16   20
6    72  116   12
7    36  188  178
8    90   96  162
9    63  166  156
10  120   22   10

所以要覆盖你可以这样做:

df.loc[:,['A','B','C']] = df[['A','B','C']] * df2.values

我想你可以做更多的程序化:

df[df2.columns] *= df2.values

推荐阅读