easymoneysinpers 2022-12-23 18:41 采纳率: 87%
浏览 83
已结题

想要将公交GPS数据与线网数据分别匹配报错Columns must be same length as key

想要将公交GPS数据与线网数据分别匹配报错Columns must be same length as key
代码如下:

tmp_list = list()
for i in range(1,11):
    # 取出第i条线路的数据
    tmp = BUS_GPS_2416[BUS_GPS_2416['new_id'] == i]
    # 提取第i条线路
    lineshp = line_2416[line_2416['line_name'] == tmp['Linename'].iloc[0]]
    tmp['project'] = tmp['new_id']
    # 利用project方法,将数据点投影至公交线路上
    tmp['project'] = tmp['geometry'].apply(lambda r:lineshp.project(r))
    # 原始的数据点存储在一个字段内
    tmp['geometry_orgin'] = tmp['geometry']
    # 利用interpolate方法,生成匹配的坐标点
    tmp['geometry'] = tmp['project'].apply(lambda r:lineshp.interpolate(r))
    # 计算原始点和匹配点之间的距离
    tmp['diff'] = tmp.apply(lambda r:r['geometry_orgin'].distance(r['geometry']),axis = 1)
    tmp_list.append(tmp)
BUS_GPS_clean = pd.concat(tmp_list, axis=0, ignore_index=False)
BUS_GPS_clean


报错:

img

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-23 18:47
    关注

    拼接数据时,你会发现报错信息中有一句话是这样的:"Columns must be same length as key"。这意味着在拼接数据时,拼接的数据的列数不一致。


    为了解决这个问题,你需要检查一下在循环中每次生成的tmp数据中有没有缺失的列,或者有没有多余的列。

    你可以在循环的每一次迭代中,使用df.info()函数来查看数据的信息,看看是否有缺失的列或者多余的列。


    如果你发现某一次迭代中的tmp数据中有缺失的列或者多余的列,你需要调整你的代码,使得每一次迭代中生成的tmp数据的列数都是一致的。


    此外,你也可以使用df.columns来查看数据的列名,以确保每一次迭代中生成的tmp数据的列名都是一致的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月31日
  • 已采纳回答 12月23日
  • 创建了问题 12月23日

悬赏问题

  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错