我们有一个带有排序的浮点索引的数据框,并且两列应该相同。它们的值并不总是存在,在最坏的情况下,它们的索引值不会重叠。目的是能够检查彼此之间的距离。
我当时正在考虑对缺失值进行插值,然后计算距离。这将导致可以计算此距离的大量索引值。
另一种方法是比较实际值,并提出索引错误,对此比较有意义。
问题是哪种方法更有意义,以及如何计算距离。结果应该告诉我们它们彼此之间有多近0
表示它们相同。
示例
我们有一个包含两列a1
和a2
的数据框,以及一个排序的浮点索引。
df = pd.DataFrame({'a1':[6.1, np.nan, 6.8, 7.5, 7.9],
'a2':[6.2, 6.6, 6.8, np.nan, 7.7]},
index=[0.10, 0.11, 0.13, 0.16, 0.17])
a1 a2
0.10 6.1 6.2
0.11 NaN 6.6
0.13 6.8 6.8
0.16 7.5 NaN
0.17 7.9 7.7
答案 0 :(得分:1)
如果您的目标是获取内插矢量的absolute distance,则可以按照以下步骤操作:
r = pd.interpolate()
absolute_sum = (r["a1"] - r["a2"]).abs().sum()
在给定的示例中,结果为0.7000000000000011
。
但是,如果您对这两列的相似程度感兴趣,可以看看correlation coefficient。
r = pd.interpolate()
correlation = r["a1"].corr("a2")
在给定的示例中,结果为0.9929580338258082
。
答案 1 :(得分:0)
自从您提到距离
from scipy.spatial import distance
df=df.interpolate(axis=0)
pd.DataFrame(distance.cdist(df.values, df.values, 'euclidean'),columns=df.index,index=df.index)
Out[468]:
0.10 0.11 0.13 0.16 0.17
0.10 0.000000 0.531507 0.921954 1.750000 2.343075
0.11 0.531507 0.000000 0.403113 1.234909 1.820027
0.13 0.921954 0.403113 0.000000 0.832166 1.421267
0.16 1.750000 1.234909 0.832166 0.000000 0.602080
0.17 2.343075 1.820027 1.421267 0.602080 0.000000