首页 > 解决方案 > pandas - 数据帧上的 lambda 函数 - 我使用不正确吗?

问题描述

所以我正在尝试将计算逐行应用于我的数据框

下面是我的代码,但它需要几个小时才能运行,有时甚至无法完成,我在这里做错了什么?

该代码应该在数据库的每一行上运行 FindLL 函数。

postcode_geo = []

with open (r'Desktop\Python Projects\Work - Transport Movement\open_postcode_geo.csv', 'r') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        postcode_geo.append(row)

#function to find lat,lon of given postcode
postcode_geo_postcodes = [x[0] for x in postcode_geo]

def FindLL(postcode):
    if postcode in postcode_geo_postcodes:
        for x in range(0,len(postcode_geo)):
            if postcode == postcode_geo[x][0]:
                latitude = postcode_geo[x][7]
                longitude = postcode_geo[x][8]
                return f'{longitude},{latitude}'  
    else:
        return "Postcode can't find longitude/latitude, please check format"

df = pd.read_excel(r'Desktop\Python Projects\Work - Transport Movement\Transport Movement P10\TransportMovementP10.xlsx')

df[f'Start Postcode LL'] = df.apply(lambda row: FindLL(row['ESP_START_LOCATION_POSTCODE']), axis = 1)
df[f'End Postcode LL'] = df.apply(lambda row: FindLL(row['ESP_END_LOCATION_POSTCODE']), axis = 1)

print(df)

所以数据框大约有 68,000 行数据和大约 22 列,但我只使用其中的 2 列

邮政编码地理文件大约有 120 万行

标签: pythonpandasdataframe

解决方案


推荐阅读