【发布时间】:2021-12-10 13:20:05
【问题描述】:
我有一个这样的熊猫数据框。其中索引是 pd.DatetimeIndex,列是时间序列。
| x_1 | x_2 | x_3 | |
|---|---|---|---|
| 2020-08-17 | 133.23 | 2457.45 | -4676 |
| 2020-08-18 | -982 | -6354.56 | -245.657 |
| 2020-08-19 | 5678.642 | 245.2786 | 2461.785 |
| 2020-08-20 | -2394 | 154.34 | -735.653 |
| 2020-08-20 | 236 | -8876 | -698.245 |
我需要计算所有列之间的欧几里得距离。即 (x_1 - x_2)、(x_1 - x_3)、(x_2 - x_3),并返回如下所示的方形数据框: (请注意,此表中的值只是一个示例,并非欧几里得距离的实际结果)
| x_1 | x_2 | x_3 | |
|---|---|---|---|
| x_1 | 0 | 123 | 456 |
| x_2 | 123 | 0 | 789 |
| x_3 | 456 | 789 | 0 |
我尝试了this 资源,但我不知道如何传递我的 df 的列。如果理解正确,该示例将行作为序列传递以计算 ED。
【问题讨论】:
-
你有一个 DatetimeIndex 并且列是时间序列的事实似乎无关紧要。你基本上有 3 个点,在 n 维空间(其中 n 是行数),你想计算欧几里得距离,对吧?
-
欧几里得距离。我知道我可以做类似 np.linalg.norm(x_1 - x_2) 的事情。但我想同时计算所有列。输出应该看起来像第二个数据帧,尽管这些数字只是为了说明应该如何填充 df。
-
@Riley 是的,我想要所有列的欧几里得距离而不是行。
标签: python pandas distance series