Pandas们加入了1.x表格!=表2.x

2024-10-01 11:32:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了这个SQL问题,想知道是否可以用python解决它。你知道吗

SQL问题: “表点”保存平面中x轴上某些点的x坐标,这些点都是整数。你知道吗

编写一个查询来查找这些点中两点之间的最短距离。你知道吗

| x   |
|-----|
| -1  |
| 0   |
| 2   |

我已启动熊猫数据帧,如下所示。

import pandas as pd
point = pd.DataFrame(np.array([-1,0,2]), columns=['x'])

我只是想做些

p1 = point
p2 = point.copy()
p1.merge(p2, on='x', condition = ('!='))

但我知道没有这样的条件。你知道吗

有谁能为大熊猫的这个问题提供解决方案吗?你知道吗

注意:我的问题与join two dt when columns are not equal不同,所以它不是重复的。我的问题是将所有值附加到原始集中的每个值上。链接中的问题是找出区别。你知道吗


Tags: columns数据importdataframepandassqlas整数
2条回答

这是交叉连接后的筛选器

p1.assign(key=1).merge(p2.assign(key=1),on='key').loc[lambda x : x['x_x']!=x['x_y']]
Out[29]: 
   x_x  key  x_y
1   -1    1    0
2   -1    1    2
3    0    1   -1
5    0    1    2
6    2    1   -1
7    2    1    0
point = [-1, 0, 1]
ix = pd.MultiIndex.from_product([point, point], names=['a', 'b'])
df = pd.DataFrame(index=ix).reset_index()
df = df[df.a != df.b]

(rather) efficiently get you a dataframe与两个坐标的唯一组合,就像SQL中的外部联接一样:

   a  b
1 -1  0
2 -1  1
3  0 -1
5  0  1
6  1 -1
7  1  0

之后,你就可以用

>>> (df.a - df.b).abs().min()
1

相关问题 更多 >