首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在pandas中获取与多列分组关联的所有值

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

Stack Overflow用户
提问于 2020-08-19 05:41:00
回答 1查看 41关注 0票数 1

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

基本上,我正在寻找一种方法来获得一列中对应于多列分组的所有值。我的原始数据框有三列:纬度、经度和建筑物ID。有不同的建筑物ID共享相同的纬度/经度坐标。我希望将纬度/经度列组合在一起,并指示与这些坐标关联的每个建筑物ID。

现在,我的数据帧看起来像这样:

代码语言:javascript
运行
复制
     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。

我希望输出如下所示:

代码语言:javascript
运行
复制
    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,但我希望在数据帧中捕获这一点。

一开始,我试着这样做:

代码语言:javascript
运行
复制
for j in df.groupby(['Latitude', 'Longitude']):
   data = pd.DataFrame(j)

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

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-19 22:48:51

您可以尝试使用set_indexaggsort_values

代码语言:javascript
运行
复制
df.set_index('BldgID').agg(tuple,1)\
  .reset_index().rename(columns={0:'Lat/Lon'}).sort_values('Lat/Lon')

输出:

代码语言:javascript
运行
复制
   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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63477017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档