python pandas: 将 json 数据分配给数据帧条目 returns 错误 "Incompatible indexer with Series"

python pandas: assigning a json data to a data frame entry returns error "Incompatible indexer with Series"

作为 python 的新手,我遇到了一个错误 "Incompatible indexer with Series"。

我正在从 postgreSQL 数据库中读取条目:

    df_postgresDB = pd.read_sql_query('SELECT * FROM public.json_view',con=<...>)        
    exampleKey = 'FPB-83160'
    jsonCol = 'efforts'
    AreasDict = df_postgresDB.loc[exampleKey, jsonCol]
    print('AreasDict=', AreasDict)
    print('type(AreasDict)=', type(AreasDict))

...输出:

    AreasDict= {'4G NeVe': 0, '4G FT ET': 400, '4G C-Plane': 800, 'MANO BTSSM': 0}
    type(AreasDict)= <class 'dict'>

postgreSQL 数据库中的列显示类型 'jsonb':

这个'AreasDict'用于我要调用的另一个项目的函数中,re-use用于我的项目。但是在我的项目中,我需要从另一个来源构建数据。所以我创建了一个数据框并尝试分配 'AreasDict' ()...

    column_names = ['issue_key', jsonCol]
    df = pd.DataFrame(index=range(1,2), columns=column_names)
    df.iloc[0, 0] = exampleKey
    df.iloc[0, 1] = AreasDict

...最后一行代码我得到了那个错误

ValueError: Incompatible indexer with Series

我做错了什么?

在 pandas 中,非标量值的支持很差 - 许多函数应该会失败。


解决方案是转换为 list 字典列表:

jsonCol = 'j'
exampleKey = 'key'
AreasDict= {'4G NeVe': 0, '4G FT ET': 400, '4G C-Plane': 800, 'MANO BTSSM': 0}

column_names = ['issue_key', jsonCol]
df = pd.DataFrame(index=range(1,2), columns=column_names)
df.iloc[0, 0] = exampleKey
df.iloc[0, 1] = [AreasDict]
print (df)
  issue_key                                                  j
1       key  [{'4G NeVe': 0, '4G FT ET': 400, '4G C-Plane':...