首先,如果这个问题不清楚,我道歉。我将根据我在这里的意思进行推断。
基本上,我正在寻找一种方法来获得对应于多列分组的一列中的所有值。我的原始数据框有三列:纬度、经度和建筑物ID。有不同的建筑ID共享相同的纬度/经度坐标。我想将纬度/经度列组合在一起,并指示与这些坐标相关的每个建筑物ID。
现在,我的数据框如下所示:
BldgID | Latitude | Longitude
---------------------------------------------------------
1 30.48583 -70.57566
2 27.87265 -67.28715
3 30.48583 -70.57566
4 45.26657 -75.14273
可以看出,每个建筑ID与其纬度/经度坐标配对。Twi建筑ID具有相同的坐标。因此,我想将lat/lon列组合在一起,并指出与一组坐标关联的所有建筑ID。
我希望输出看起来像这样:
Lat/Lon | BldgID
-------------------------------------------------------
('30.48583', '-70.57566') 1
('30.48583', '-70.57566') 3
('30.48583', '-70.57566') 9
('27.87265', '-67.28715') 2
('27.87265', '-67.28715') 6
('45.26657', '-75.14273') 4
('48.19456', '-81.23281') 12
您可以看到,建筑ID 1、3和9与其共享的纬度/经度坐标成对出现。ID 2和6也配对在一起。ID 4和12各自有自己的一组坐标。
如果我循环遍历列分组,它将打印出哪些ID与lat/lon坐标相对应,但我希望在数据框中捕获此值。
起初,我试着做:
for j in df.groupby(['Latitude', 'Longitude']):
data = pd.DataFrame(j)
但这对我不起作用。我相信有一个有效的方法来做到这一点。
谢谢你的帮助。
您可以尝试使用set\u index
、agg
和sort\u值
:
df.set_index('BldgID').agg(tuple,1)\
.reset_index().rename(columns={0:'Lat/Lon'}).sort_values('Lat/Lon')
输出:
BldgID Lat/Lon
1 2 (27.87265, -67.28715)
0 1 (30.48583, -70.57566)
2 3 (30.48583, -70.57566)
3 4 (45.26657, -75.14273)