我有两个数据框,它们的索引标题和列的标题完全相同,但这些表中的值不同。行和列的数量也完全相同。我们称它们为df1和df2。
df1 = {'A':['a1','a2','a3','a4'],'B':['b1','b2','b3','b4'],'C':['c1','c2','c3','c4']}
df2 = {'A':['d1','d2','d3','d4'],'B':['e1','e2','e3','e4'],'C':['f1','f2','f3','f4']}
我想对这些矩阵执行几项操作
乘法-创建以下矩阵:
df2 = {'A':['a1*d1','a2*d2','a3*d3','a4*d4'],'B':['b1*e1','b2*e2','b3*e3','b4*e4'],'C':['c1*f1','c2*f2','c3*f3','c4*f4']}
以及加法,减法,除法,使用完全相同的逻辑。
请注意,问题更多是关于可以复制的通用代码,因为我使用的矩阵具有数百行和列。
答案 0 :(得分:1)
使用pandas
库可轻松实现。 OP的问题尚不清楚列的数据类型,但是如果它们是数字,则下面的代码将运行。
尝试:
import pandas as pd
pd.DataFrame(df1) * pd.DataFrame(df2)
答案 1 :(得分:1)
如果您不想仅为此操作导入熊猫,则可以使用以下代码进行导入:
df1_2 = {key: [x*y for x,y in zip(df1[key],df2[key])] for key in df1.keys()}
注意::仅当值是数字时,此方法才有效。如果不对x'*'y
之类的字符串使用串联,请用所需的操作替换+
。