在变量中使用列表内容返回“TypeError:float()参数必须是字符串或数字,而不是“set”

2024-10-01 02:30:14 发布

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

我正在尝试编写一个脚本,该脚本将从CSV中提取数据,然后使用.linecollection(类似于https://stackoverflow.com/a/21357666/4488288中所示的方法)在与数据对应的y值处创建线段

我能够从csv文件中创建列表,但是我得到了一个 "TypeError: float() argument must be a string or a number, not 'set'"错误

我正在使用python 3.7.3

我是matplotlib的新手,已经很多年没有使用python了,所以任何帮助都会很好——我不需要这种特殊的方法,只需要输入csv文件和输出图表

(我正在尝试创建简单的核能水平图/格罗特里亚图-我遇到的任何解决方案都不能满足我的需要)

我尝试使用列表(map)(float和get

ValueError: setting an array element with a sequence.

从csv收集数据:

    for row in csv_reader:
        if line_count < 10:
            angmom0.append({row[0]})
            energy0.append({row[1]})
            line_count += 1

尝试写入列表的内容(为了简化,我只尝试列表中的一个条目)

lines = [[(0, energy0[0]), (1,energy0[0])], [(2, 3), (3, 3)], [(1, 2), (1, 3)]]
c = np.array([(1, 0, 0, 1), (0, 1, 0, 1), (0, 0, 1, 1)])

预期的输出将是一个图表,类似于(https://i.stack.imgur.com/Srl6l.png).]1

我目前根本无法产生任何输出

编辑

花括号是问题所在!谢谢大家的帮助


Tags: 文件csv数据方法https脚本com列表
2条回答

当你写作时

angmom0.append({row[0]})

您正在将带有row[0]的集合附加到angmom0列表中。集合是python中的内置元素,是无序、唯一元素的集合。例如,{4,5,6,2}是一个集合。您可以通过编写花括号来创建它们,然后在花括号内创建一系列元素。在您的例子中,单个元素将是row[0]

我不知道您的CSV的确切格式,所以我不能确定,但是您可能只想执行angmom0.append(row[0]):)

当从csv文件收集数据时,您正在使用{row[0]}{row[1]},这基本上创建了一个具有一个元素的set。我不确定,但您可能希望像这样使用f strings。您只需删除{}并改为执行row[0],因为它无论如何都是一个字符串。我不确定这是否是问题所在,但我希望这会有所帮助

相关问题 更多 >