我有两个数据框,每列包含不同人的值:
import numpy as np
import pandas as pd
import math
df1 = pd.DataFrame({
"Anna":[1.5,-2,2.5],
"Bob":[2.5,-3,3.5],
"Cam":[3.5,-4,4.5]})
df2 = pd.DataFrame({
"Dave":[1,-2.5,2],
"Emma":[2,-3.5,3],
"Fred":[3,-4.5,4]})
print(df1)
Anna Bob Cam
0 1.5 2.5 3.5
1 -2.0 -3.0 -4.0
2 2.5 3.5 4.5
print(df2)
Dave Emma Fred
0 1.0 2.0 3.0
1 -2.5 -3.5 -4.5
2 2.0 3.0 4.0
有没有比这个双循环更快的方法来获得从 df1 中的每个人到 df2 中的每个人的距离矩阵?
results = []
for n1 in df1.columns:
results.append([])
for n2 in df2.columns:
results[-1].append(math.dist(df1[n1], df2[n2]))
res_df = pd.DataFrame(results)
res_df.columns = df1.columns
res_df.index = df2.columns
print(res_df)
Anna Bob Cam
Dave 0.866025 1.658312 3.278719
Emma 2.179449 0.866025 1.658312
Fred 3.840573 2.179449 0.866025