将 (x, y) 坐标的元组对设置为 dict 作为具有 id 值的键

Set tuple pair of (x, y) coordinates into dict as key with id value

数据如下所示:

d = {'location_id': [1, 2, 3, 4, 5], 'x': [47.43715, 48.213889, 46.631111, 46.551111, 47.356628], 'y': [11.880689, 14.274444, 14.371, 13.665556, 11.705181]}
df = pd.DataFrame(data=d)

print(df)
     location_id        x         y
0       1          47.43715   11.880689
1       2          48.213889  14.274444
2       3          46.631111  14.371
3       4          46.551111  13.665556
4       5          47.356628  11.705181

预期输出:

{(47.43715, 11.880689): 1, (48.213889, 14.274444): 2, (46.631111, 14.371): 3, ...}

所以我可以简单地访问提供点坐标的 ID。

我尝试过的:

dict(zip(df['x'].astype('float'), df['y'].astype('float'), zip(df['location_id'])))
Error: ValueError: dictionary update sequence element #0 has length 3; 2 is required

or

dict(zip(tuple(df['x'].astype('float'), df['y'].astype('float')), zip(df['location_id'])))
TypeError: tuple expected at most 1 arguments, got 2

我在谷歌上搜索了一段时间,但我不是很清楚。感谢您的帮助。

我觉得这个

result = dict(zip(zip(df['x'], df['y']), df['location_id']))

应该给你想要的?结果:

{(47.43715, 11.880689): 1,
 (48.213889, 14.274444): 2,
 (46.631111, 14.371): 3,
 (46.551111, 13.665556): 4,
 (47.356628, 11.705181): 5}

我没有使用数据框,这是你想要的吗?

my_dict = {}
d = {'location_id': [1, 2, 3, 4, 5], 'x': [47.43715, 48.213889, 46.631111, 46.551111, 47.356628], 'y': [11.880689, 14.274444, 14.371, 13.665556, 11.705181]}


for i in range(len(d['location_id'])):
  my_dict[ (d['x'][i] , d['y'][i]) ] = d['location_id'][i]

您可以将 xy 列设置为索引,然后将 location_id 列导出到字典

d = df.set_index(['x', 'y'])['location_id'].to_dict()
print(d)

{(47.43715, 11.880689): 1, (48.213889, 14.274444): 2, (46.631111, 14.371): 3, (46.551111, 13.665556): 4, (47.356628, 11.705181): 5}