Python 将两个列名称相同但索引不同的数据帧相乘

Python 将两个列名称相同但索引不同的数据帧相乘,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据框,一个是数据框,一个是预测假设列表。列名对应,但索引级别不对应(按设计)。请演示如何将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(df1l

我有两个数据框,一个是数据框,一个是预测假设列表。列名对应,但索引级别不对应(按设计)。请演示如何将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))
因此,要覆盖,您可以执行以下操作:

df.loc[:,['A','B','C']] = df[['A','B','C']] * df2.values
df[df2.columns] *= df2.values
我想,为了更具程序性,您可以:

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

不能只是从df1中删除D列。你给我的东西对我的例子有效,但对我的实际数据无效,这意味着我需要重新思考这个问题。不过,我要感谢你的回答:)