You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取文件数据生成指定格式字典的代码调试求助

解决CSV读取后输出单数值而非数组的问题

嘿,我帮你搞定这个问题啦!你的代码现在输出带numpy数组的字典,是因为你把CSV里的单列数据转成了数组,但其实我们只需要那唯一的单个数值就行。下面是修改后的代码和关键说明:

问题原因

你用np.array()把CSV的整列数据转成了数组,但你的文件里只有一对数值,所以数组里只有一个元素,导致输出的字典值是数组类型而非纯数值。另外ix方法在pandas新版本里已经被弃用了,建议换成更稳定的iloc。

修改后的完整代码

import pandas as pd
import numpy as np

def read():
    # 读取CSV,跳过开头空格,无表头
    data = pd.read_csv('distance.csv', skipinitialspace=True, header=None)
    # 直接提取第一行第一列、第一行第二列的标量值,而非转成数组
    x0 = data.iloc[0, 0]
    y0 = data.iloc[0, 1]
    # 构建期望格式的字典
    position = {'x': x0 , 'y' : y0}
    print(position)  # Python3需要加括号,Python2可以去掉括号

if __name__ == '__main__':
    try:
        read()
    except KeyboardInterrupt:
        rospy.loginfo('Shutting down')

关键改动说明

  • 替换已弃用的ix为iloc:iloc是pandas官方推荐的基于位置索引的方法,兼容性更好,避免版本报错
  • 提取标量值而非数组:直接用iloc[0,0]取第一行第一列的单个数值,而不是把整列转成数组,这样字典里的value就是纯数字,符合你的期望格式
  • 调整print语句:如果用Python3,print必须是函数形式(加括号);如果是Python2,可以保持原无括号的写法

如果需要输出时带上position = 前缀,可以把print语句改成:

print(f"position = {position}")

这样运行后就会完全匹配你想要的输出格式啦。

内容的提问来源于stack exchange,提问作者Redhwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:49:54