首页 > 解决方案 > 数据框从列表中提取字典

问题描述

我有以下格式的数据框:

ID Details
1  [{"Number":"63","ID":"1","Road":"West"}]
2  [{"Number":"97","ID":"2","Road":"North"}]

我正在尝试提取每行中标记为 Road 的值。预期输出:

ID Details                                    Road
1  [{"Number":"63","ID":"1","Road":"West"}]   West
2  [{"Number":"97","ID":"2","Road":"North"}]  North

df['Details'].str[0]中,我得到 [

df['Details'].str[0].str.get('Road')中,我只得到 NaN

标签: pythonpandaslistdataframedictionary

解决方案


您可以尝试列表理解:

df = pd.DataFrame(
    {
        "ID": [1, 2],
        "Details": [
            [{"Number": "63", "ID": "1", "Road": "West"}],
            [{"Number": "97", "ID": "2", "Road": "North"}],
        ],
    }
)

df

    ID  Details
0   1   [{'Number': '63', 'ID': '1', 'Road': 'West'}]
1   2   [{'Number': '97', 'ID': '2', 'Road': 'North'}]


df["Road"] = [entry["Road"] for entry in df.Details.str[0]]

    ID  Details                                         Road
0   1   [{'Number': '63', 'ID': '1', 'Road': 'West'}]   West
1   2   [{'Number': '97', 'ID': '2', 'Road': 'North'}]  North

推荐阅读