我以为是我的解决方案,其实并不完全是我的解决方案。
“解决方案”代码:
# Get "raw" data
orig_df = pd.DataFrame(list(jobs["jobs_by_id"]))
# Creates df but removes the NaN elements
new_df = pd.DataFrame(list(orig_df[0]).dropna())
# Get the orig_df indexes of non-NaN rows to apply to the new df
new_ndx = new_df.index[orig_df[0].notna()]
# Reset index and give new indexes that will line up
new_df = new_df.reset_index(drop=True)
new_df = new_df.set_index(new_ndx)
# Now apply the new_df to the orig_df
orig_df= pd.concat([orig_df, new_df ], axis=1)
现在我遇到了一个间歇性的TypeError:类型为“float”的对象没有len()
。在上面的代码示例中的第一行抛出此错误。有时代码按预期运行,有时抛出TypeError
。
我找到了这篇文章,并按照答案所建议的那样做了,打印出列/系列中的每个元素,看看它是什么类型。我知道有些行/元素将是空的,并且将包含nan
。这两组作业步骤在系列中都有nan
元素,但有些过程很好,有些则出错。成功批和错误批都有一个字典列表和nan
的组合。两个数据集中都没有格式错误的字典,所有数据类型都与预期的一样。
此作业批处理执行良好:
Processing JOB_123456
<class 'float'>
<class 'float'>
<class 'float'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'float'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'float'>
<class 'float'>
<class 'float'>
<class 'float'>
<class 'float'>
<class 'float'>
<class 'float'>
<class 'float'>
<class 'float'>
<class 'float'>
SUCCESS
但这一个...
Processing JOB_99999
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'float'>
<class 'float'>
<class 'list'>
<class 'float'>
Traceback (most recent call last):
File "jobs.py", line 743, in <module>
dump_events('2021-04-13')
File "jobs.py", line 198, in job_events
orig_df = pd.DataFrame(list(jobs["jobs_by_id"]))
File "/opt/rh/rh-python36/root/usr/lib64/python3.6/site-packages/pandas/core/frame.py", line 450, in __init__
arrays, columns = to_arrays(data, columns, dtype=dtype)
File "/opt/rh/rh-python36/root/usr/lib64/python3.6/site-packages/pandas/core/internals/construction.py", line 464, in to_arrays
return _list_to_arrays(data, columns, coerce_float=coerce_float, dtype=dtype)
File "/opt/rh/rh-python36/root/usr/lib64/python3.6/site-packages/pandas/core/internals/construction.py", line 496, in _list_to_arrays
content = list(lib.to_object_array(data).T)
File "pandas/_libs/lib.pyx", line 2275, in pandas._libs.lib.to_object_array
TypeError: object of type 'float' has no len()
为什么python只在某些情况下不满意?
这是调试代码时可以做的-
在代码的第198行之前再添加一行,以检查“jobs[”jobs_by_id]“的数据类型
print(type(jobs["jobs_by_id"])) # line to add
orig_df = pd.DataFrame(list(jobs["jobs_by_id"]))
在脚本成功运行的第一次运行中,您可能会获得始终为'list'的数据类型。但是,在第二次运行时,某些实例的数据类型可能会浮动,这就是为什么会出现此错误的原因。
您可能需要在代码中添加一些错误处理来解决这个问题。
下面是一节课: 这是我计划的一部分: 但是我在“cr12=cr.weave(cr2)”中得到了一个错误: 对于范围内的i(最小(长度,长度(其他)): TypeError:类型为“CoordinaterRow”的对象没有len()
我得到这个错误: TypeError:类型为“Cursor”的对象没有len() 当我试图执行:
如何修复此错误:typeerror:类型为“generator”的对象没有len()
问题内容: 我有一个很大的文件(大约有200k输入)。输入形式为: 我正在读取此文件并将其存储在列表中,如下所示: 每当看到新行时,都会拆分文件。因此,文本如下所示: 我现在必须将这些值存储在字典中,其中键值是每个列表的第一个元素。即键将是A,B,C,D。我发现很难输入值作为列表的其余元素。即字典应该看起来像: 我已经完成以下工作: 请帮助我如何将值添加到字典中。如果列表中没有任何元素(除了将作为
问题内容: 我想创建一个字典,其值为列表。例如: 如果我做: 我收到一个KeyError,因为d […]不是列表。在这种情况下,我可以在分配a后添加以下代码以初始化字典。 有一个更好的方法吗?可以说,直到进入第二个循环,我才知道需要的键。例如: 然后可以替代 与 处理此问题的最佳方法是什么?理想情况下,追加将“有效”。有什么方法可以表达我想要空列表的字典,即使我第一次创建列表时也不知道每个键? 问
问题内容: 我想将JSON数据存储在Python Pandas DataFrame中 我的JSON数据是像这样的字典的字典 我这样做是为了将数据放入DataFrame 我明白了 我的问题是我的DataFrame包含字典而不是值。 我想知道如何使用Pandas DataFrame管理多维数据(超过2个维度…这里有3个维度)。 DataFrame中的每个字典都有相同的键。 问题答案: df = pd.