首先,如果这个问题不清楚,我向您道歉。我将根据我在这里的意思进行推断。
基本上,我正在寻找一种方法来获得一列中对应于多列分组的所有值。我的原始数据框有三列:纬度、经度和建筑物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具有相同的坐标。因此,我想将经度/经度列组合在一起,并指示与一组坐标相关联的所有建筑I。
我希望输出如下所示:
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也配对在一起。ID4和ID12都有自己的一组坐标。
如果我遍历列分组,它将打印出与经度/经度坐标相对应的it,但我希望在数据帧中捕获这一点。
一开始,我试着这样做:
for j in df.groupby(['Latitude', 'Longitude']):
data = pd.DataFrame(j)
但这对我不起作用。我相信有一种有效的方法可以做到这一点。
谢谢你的帮助。
发布于 2020-08-19 22:48:51
您可以尝试使用set_index
、agg
和sort_values
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)
https://stackoverflow.com/questions/63477017
复制相似问题