如何用Python创建excel表值列表?

2024-04-26 11:21:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python和Excel这类东西都很陌生。 我有一个非常大的excel表格,有100万行,我的目标是创建一个包含一些for list的列表(我想这就是我需要做的),问题如下:

我有这样的想法:

enter image description here

我想将objectid相同的所有点Y和点X(gps坐标)添加到列表中,当objectid更改时,我想将这些值添加到另一个列表中。你知道吗

我只从excel中获取数据,我的问题是如何构建列表。你知道吗

import pandas
from shapely.geometry import Point

polygon_sheet =pandas.read_excel("C:...\coords.xlsx")
for row in polygon_sheet.index:
    data = (polygon_sheet['POINT_Y'][row]) + ", " + \
           (polygon_sheet['POINT_X'][row])

我确定我需要一个嵌套的for循环,但我不知道如何获得我想要的,这是这样的:

id1 = [[41.15226404, 25.41327506], [41.15221095, 25.41363158], [41.15220779, 25.41395401], [...(all coords from id1)]]

id2= [[41.11617356, 25.53488120], [41.11541559, 25.53517417], [41.11494893, 25.53531324], [...(all coords from id2]]

以此类推,直到所有ID都被迭代。你知道吗

希望我能正确地解释我的期望。 谢谢你的帮助


Tags: fromimportpandas列表forcoordsallexcel
2条回答

您可以在每一行上应用自定义函数,以便创建具有所需输出的dict:

from collections import defaultdict

id_points = defaultdict(list)

def extrct_points(row):
    o_id, point_x, point_y = row
    id_points[o_id].append([point_x, point_y])

polygon_sheet.apply(extrct_points, axis=1)

例如:

polygon_sheet = pd.DataFrame({'OBJECTID': [1, 1,  2, 2, 2, 3], 'POINT_X':[0.23, 0.123, 0.1, 0.1, 0.2, 1],
                  'POINT_Y':[0.223, 0.3123, 0.11, 0.11, 0.22, 11]})

enter image description here

from pprint import pprint

polygon_sheet.apply(extrct_points, axis=1)

pprint(id_points)

输出:

defaultdict(<class 'list'>,
            {1.0: [[0.23, 0.223], [0.123, 0.3123]],
             2.0: [[0.1, 0.11], [0.1, 0.11], [0.2, 0.22]],
             3.0: [[1.0, 11.0]]})

你可以创建一个列表。试试看像这样:

import pandas
from shapely.geometry import Point

dt = {}
polygon_sheet =pandas.read_excel("C:...\coords.xlsx")
for row in polygon_sheet.index:
    try:
        dt[polygon_sheet['ID'][row]] += [[polygon_sheet['POINT_Y'][row], polygon_sheet['POINT_X'][row]]]
    except:
        dt.update({polygon_sheet['ID'][row]: [[polygon_sheet['POINT_Y'][row], polygon_sheet['POINT_X'][row]]]})

print(dt)

相关问题 更多 >