【问题标题】:Access a value from a dictionary stored with pandas column访问存储在 pandas 列中的字典中的值
【发布时间】:2022-01-31 12:11:26
【问题描述】:

我有一个数据框,它在一列中包含类似字典的格式键值对。但是,字典是以字符串格式存储的。

df1 = pd.DataFrame({'Name':['John', 'Jose'],
                     'Column2':['{"key": "John_value1", "key2": "John_value2"}','{"key": "Jose_value1", "key2": "Jose_value2"}'],
                    })

由于它以字符串格式存储,我无法使用以下代码访问特定元素(例如“Jose_value2”)

df1["Column2"][1]["key2"]

TypeError:字符串索引必须是整数

有人可以帮我做这件事吗?

【问题讨论】:

    标签: python-3.x pandas string dictionary


    【解决方案1】:

    您的问题是 '' 封装键会导致访问值出现问题。

    df1 = pd.DataFrame({'Name':['John', 'Jose'],
                         'Column2':[{"key": "John_value1", "key2": "John_value2"},{"key": "Jose_value1", "key2": "Jose_value2"}],
                        })
    
    print(df1['Column2'][1]['key2'])
    

    输出:

    Jose_value2
    

    【讨论】:

      【解决方案2】:

      只是通过使用ast.literal_eval从字典列表中删除引号来做到这一点

      import ast
      df1["Column3"] = [ ast.literal_eval(i) for i in df1["Column2"]]
      df1["Column3"][1]["key2"]
      

      'Jose_value2'

      【讨论】:

        【解决方案3】:

        添加:

        import json
        key2_value = json.loads(df1["Column2"][1]).get("key2")
        

        这会将字符串转换成字典,然后得到你想要的值。

        您可以在 python 文档中详细查看 json.loads() 虽然我更喜欢查看此链接:https://www.geeksforgeeks.org/python-convert-string-dictionary-to-dictionary/

        【讨论】:

          猜你喜欢
          • 2017-06-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多