提问者:小点点

如何获取与中的多列分组关联的所有值


首先,如果这个问题不清楚,我道歉。我将根据我在这里的意思进行推断。

基本上,我正在寻找一种方法来获得对应于多列分组的一列中的所有值。我的原始数据框有三列:纬度、经度和建筑物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)

但这对我不起作用。我相信有一个有效的方法来做到这一点。

谢谢你的帮助。


共1个答案

匿名用户

您可以尝试使用set\u indexaggsort\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)