Pandas升级后用concat替代append报错,如何修复?
修复Pandas中concat替代append的GPX数据处理错误
你遇到的错误是因为pandas.concat()只能拼接Series或DataFrame对象,直接传入字典不符合要求。下面提供两种修复方案:
方案1:修正concat的使用方式
把单个字典转换为DataFrame后再进行拼接:
import pandas as bib_pandas gpx = mod_gpxpy.parse(open(dir_file)) # 读取GPX文件 gpx_points = gpx.tracks[0].segments[0].points data_frame = bib_pandas.DataFrame(columns=["lon", "lat", "elev", "time"]) for point in gpx_points: # 将单行字典转为DataFrame new_row_df = bib_pandas.DataFrame([{ "lon": point.longitude, "lat": point.latitude, "elev": point.elevation, "time": point.time }]) # 拼接并更新DataFrame data_frame = bib_pandas.concat([data_frame, new_row_df], ignore_index=True)
方案2:更高效的批量生成方式(推荐)
循环中反复调用concat会频繁创建新对象,数据量大时性能低下。推荐先收集所有数据到列表,再一次性生成DataFrame:
import pandas as bib_pandas gpx = mod_gpxpy.parse(open(dir_file)) # 读取GPX文件 gpx_points = gpx.tracks[0].segments[0].points # 批量收集所有点位数据 point_data = [] for point in gpx_points: point_data.append({ "lon": point.longitude, "lat": point.latitude, "elev": point.elevation, "time": point.time }) # 一次性生成DataFrame data_frame = bib_pandas.DataFrame(point_data, columns=["lon", "lat", "elev", "time"])
这种方式不仅避免了弃用警告,还能大幅提升数据处理效率,是Pandas官方推荐的最佳实践。
内容的提问来源于stack exchange,提问作者StOMicha
相关产品推荐
相关产品推荐

