【发布时间】:2021-12-07 00:05:33
【问题描述】:
我正在研究包含大量(大约 450 万个)对象的 geopanda,其中每个对象都有一个唯一的 ID 号('PARCEL_SPI')和另一个代码('PC_PLANNO')。
我想做的是编写一些代码,为每个对象找到具有相同 PLANNO 的所有其他对象,并将它们的 ID 号作为列表添加到新属性中,例如对象的“Same_code”。 df 称为 spin_copy。
这是我所拥有的快速示例:
| PARCEL_SPI | PC_PLANNO |
|---|---|
| 23908 | LP12345 |
| 90435 | LP12345 |
| 329048 | LP90803 |
| 6409 | LP2399 |
| 34534 | LP90803 |
| 092824 | LP12345 |
以及我想要的:
| PARCEL_SPI | PC_PLANNO | Same_code |
|---|---|---|
| 23908 | LP12345 | [90435, 092824] |
| 90435 | LP12345 | [23908,092824] |
| 329048 | LP90803 | 34534 |
| 6409 | LP2399 | None |
| 34534 | LP90803 | 329048 |
| 092824 | LP12345 | [23908, 90435] |
我不太确定如何执行此操作,但这是我使用 groupby 的尝试:
spine_copy.groupby('PC_PLANNO')['PARCEL_SPI'].apply(list)
但是,这不会将列表添加为每个对象的新属性,我不确定如何执行此操作。
提前致谢!
【问题讨论】:
-
您可以添加一些示例数据和预期输出吗?
-
好点,补充!
-
如果添加新行
1111 LP12345会输出什么? -
不幸的是需要一个新属性——这个项目的输出基本上是一个大型数据库,每个对象都有属性
-
那么如何改变预期输出?你能补充问题吗?
标签: python pandas dataframe geopandas