首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫DataFrame上的scipy pdist()

熊猫DataFrame上的scipy pdist()
EN

Stack Overflow用户
提问于 2015-10-05 18:21:53
回答 1查看 3.5K关注 0票数 7

它的格式是:

代码语言:javascript
复制
df = pd.DataFrame({ 'A' : [0, 0, 1],
                    'B' : [2, 3, 4],
                    'C' : [5, 0, 1],
                    'D' : [1, 1, 0]},
                    columns= ['A','B', 'C', 'D'], index=['first', 'second', 'third'])

我可以简单地调用:

代码语言:javascript
复制
res = pdist(df, 'cityblock')
res
>> array([ 6.,  8.,  4.])

并看到res数组按以下顺序包含距离:[first-second, first-third, second-third]

我的问题是,我如何才能以矩阵、数据帧或(不太理想的) dict格式获得它,以便准确地知道每个距离值属于哪一对,如下所示:

代码语言:javascript
复制
       first second third
first    0      -     -
second   6      0     -
third    8      4     0

最后,我认为将distance matrix用作pandas DataFrame可能会很方便,因为我可能会对每一行应用一些排名和排序操作(例如,查找与对象first最接近的前N个对象)。

EN

回答 1

Stack Overflow用户

发布于 2015-10-05 18:43:48

哦,我在这个webpage上找到了答案。显然,这个名为squareform()的函数有一个专用的函数。暂时不要删除我的问题,以防对其他人有帮助。

代码语言:javascript
复制
from scipy.spatial.distance import squareform
res = pdist(df, 'cityblock')
squareform(res)
pd.DataFrame(squareform(res), index=df.index, columns= df.index)
>>        first  second  third
>>first       0       6      8
>>second      6       0      4
>>third       8       4      0
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32946241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档