首页 > 解决方案 > 你如何分解多个不同长度的列表列

问题描述

我遇到了这个问题,所以我检查了是否发布了任何类似的问题,但是所有解决方案都指的是列表中的项目数量相同或只有一个列表列,但是我的数据集包含 2 个不同长度的列表列。

假设我有这个数据集:

{ 
    "_id" : 43, 
    "userId" : 5, 
    "Ids" : [
        "10", 
        "59", 
        "1165", 
        "1172"
    ], 
    "roles" : [
        "5f84d38", "6245d38"
    ]
}

当前数据框:

                 _id     userId                        Ids                     roles
                  43          5           [10,59,1165,1172]         [5f84d38,6245d38]

我如何分解这两个列表,以便它在下面给出这个输出。

所需的数据框:

                 _id     userId                        Ids                     roles
                  43          5                         10                   5f84d38
                  43          5                         59                   5f84d38 
                  43          5                       1165                   5f84d38
                  43          5                       1172                   5f84d38
                  43          5                         10                   6245d38
                  43          5                         59                   6245d38
                  43          5                       1165                   6245d38
                  43          5                       1172                   6245d38

标签: pythonpandaslist

解决方案


尝试这个:

import pandas as pd

d = { 
    "_id" : 43, 
    "userId" : 5, 
    "Ids" : [
        "10", 
        "59", 
        "1165", 
        "1172"
    ], 
    "roles" : [
        "5f84d38", "6245d38"
    ]
}

df = pd.DataFrame(columns=d.keys())
rows = []
for role in d['roles']:
    for _id in d['Ids']:
        df = df.append({"_id" :d["_id"], "userId": d["userId"], "Ids":_id, "roles": role}, ignore_index=True)

推荐阅读