gpt4 book ai didi

Python:ValueError: scatter 要求 y 列为数字?

转载 作者:行者123 更新时间:2023-11-28 21:36:16 36 4
gpt4 key购买 nike

使用 pd.Dataframe 不会将列表的列转换为数据框:

下面是我读取 .mat 文件 并将其转换为 dataframe 的代码行,来 self 见过的许多示例。

但是,当我读取列中的数据时,它们仍然保持为 列表,数据两边带有方括号。我想做的是将其转换为适当的数据帧,这样我就可以将最后一列(时间数据)与其他列一起绘制为 x/strong> 和 y 散点图。但我得到的错误是 ValueError: scatter requires y column to be numeric。我没有显示绘制 xy 数据的代码。

import mat4py as mp
data = mp.loadmat('test.mat')
df = pd.DataFrame(data)

当我输入时:

df.columns

我得到以下信息:

Index(['col 1', 'col 2',
'col 3', 'col 4', ... 'col 189'] with dtype='object', length=189)

如果我输入:

df.['col 1']

我得到以下信息:

Out[95]: 
0 [0.0]
1 [0.0]
2 [0.0]
3 [0.0]
4 [0.0]
5 [0.0]
6 [0.0]
7 [0.0]
8 [0.0]
9 [0.0]
... 1622 rows in total.

我什至尝试对列使用 .apply(pd.to_numeric, errors='coerce') ,但这也不起作用。我究竟做错了什么?

更新:下面提供的评论中的解决方案仅适用于单个列,但我希望它适用于数据框中的每个单元格。在整个数据帧上使用 .apply(lambda ..) 时,列成为索引并弄乱了数据帧。我找到了将 lambda 正确应用于每个单元格并保留数据帧的解决方案。具体如下:

mm = df.applymap(lambda x: x[0])

非常感谢那些提供原始 lambda 解决方案的人。

最佳答案

你可以做到

df=pd.DataFrame({'col 1':[[0.0],[0.0]]})
df
Out[49]:
col 1
0 [0.0]
1 [0.0]
df['col 1'].apply(lambda x : x[0])
Out[50]:
0 0.0
1 0.0
Name: col 1, dtype: float64

关于Python:ValueError: scatter 要求 y 列为数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51296414/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com