假设我有两个数据框:
df1:4 列,n 行
df2:50 列,n 行
计算 df1 的每一列与 df2 的所有列的差异的最佳方法是什么?
到目前为止,我唯一的想法是合并表并创建 4*50 具有差异的新列,作为一个循环。但总得有更好的方法吧?
已经谢谢了!保罗
答案 0 :(得分:1)
为此,我创建了 2 个虚构的数据框:
输入数据帧
df1 = pd.DataFrame({"a":[1,1,1],
"b":[2,2,2],
})
df2 = pd.DataFrame({"aa":[10,10,10],
"bb":[20,20,20],
"cc":[30,30,30],
"dd":[40,40,40],
"ee":[50,50,50]
})
print(df1)
a b
0 1 2
1 1 2
2 1 2
print(df2)
aa bb cc dd ee
0 10 20 30 40 50
1 10 20 30 40 50
2 10 20 30 40 50
解决方案
df = pd.concat([df2.sub(df1[i], axis=0) for i in df1.columns],axis =1)
df.columns= [i for i in range(df1.shape[1]*df2.shape[1])]
df
结果
0 1 2 3 4 5 6 7 8 9
0 9 19 29 39 49 8 18 28 38 48
1 9 19 29 39 49 8 18 28 38 48
2 9 19 29 39 49 8 18 28 38 48