Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取错误';没有要连接的对象';在尝试创建数据帧时?_Python_Pandas_Dataframe - Fatal编程技术网

Python 获取错误';没有要连接的对象';在尝试创建数据帧时?

Python 获取错误';没有要连接的对象';在尝试创建数据帧时?,python,pandas,dataframe,Python,Pandas,Dataframe,我正在从API中提取值,并尝试创建一个数据帧。当我没有从API返回任何数据时,即如果API返回零值,我的代码就会失败。当API返回值时,下面的代码可以完美地工作 我希望创建一个具有空值的数据帧结构,即使API返回零值。如何做到这一点 我的代码 data = json.loads(response.text) if 'items' in data: if len(data['items']) > 0: df = pd.json_normaliz

我正在从API中提取值,并尝试创建一个数据帧。当我没有从API返回任何数据时,即如果API返回零值,我的代码就会失败。当API返回值时,下面的代码可以完美地工作

我希望创建一个具有空值的数据帧结构,即使API返回零值。如何做到这一点

我的代码

data = json.loads(response.text)
    if 'items' in data:
        if len(data['items']) > 0:
            df = pd.json_normalize(data, 'items', 'totalItems') 
            #NaN in column, so failed - replace NaN to empty list
            f = lambda x: x if isinstance(x, list) else []
            df['relatedEntities'] = df['relatedEntities'].apply(f)
            df['raw.identifiers'] = df['raw.identifiers'].apply(f)
            df['raw.relationships'] = df['raw.relationships'].apply(f)
            df1 = pd.concat([pd.DataFrame(x) for x in df.pop('relatedEntities')], keys=df.index).add_prefix('relatedEntities.')
            df2 = pd.concat([pd.DataFrame(x) for x in df.pop('raw.identifiers')], keys=df.index).add_prefix('raw.identifiers.')
            df3 = pd.concat([pd.DataFrame(x) for x in df.pop('raw.relationships')], keys=df.index).add_prefix('raw.relationships.'         
            df4 = df.join(df1.join(df2).join(df3).reset_index(level=1, drop=True))
            dfs.append(df4)

df = pd.concat(dfs, ignore_index=True)
API返回零值时出现的错误

ValueError                                Traceback (most recent call last)
<ipython-input-31-ee7500e589f7> in <module>
     36             dfs.append(df4)
     37 
---> 38 df = pd.concat(dfs, ignore_index=True)


    330         if len(objs) == 0:
--> 331             raise ValueError("No objects to concatenate")
    332 
    333         if keys is None:

ValueError: No objects to concatenate
ValueError回溯(最近一次调用)
在里面
36 dfs.追加(df4)
37
--->38 df=pd.concat(dfs,忽略索引=True)
330如果len(objs)==0:
-->331 raise VALUERROR(“没有要连接的对象”)
332
333如果密钥为“无”:
ValueError:没有要连接的对象

一个想法是测试数据帧列表是否为空,如果空列表返回空数据帧:

cols = ['start','end','source','title','body','severity','category']
df = pd.concat(dfs, ignore_index=True) if len(dfs) > 0 else pd.DataFrame(columns=cols)

我尝试了选项1。但是我还需要创建具有固定列名的空数据框
columns=['start'、'end'、'source'、'title'、'body'、'severity'、'category']
。应该做什么我开始在pandas 1.2.x上出现这个错误,而它在pandas 1.1.x上工作。您使用的是哪个版本?@rudolfbyker,我使用的是pandas 1.2 xSee