使用 Python 列出可读表示

List to a Readable Representation using Python

我有数据

[{'name': 'A', 'subsets': ['X_1', 'X_A', 'X_B'], 'cluster': 0},
 {'name': 'B', 'subsets': ['B_1', 'B_A'], 'cluster': 2},
 {'name': 'C', 'subsets': ['X_1', 'X_A', 'X_B'], 'cluster': 0},
 {'name': 'D', 'subsets': ['D_1', 'D_2', 'D_3', 'D_4'], 'cluster': 1}]

我需要将其表示为

Cluster Number    Subset                         Name
0                 ['X_1', 'X_A', 'X_B']          A, C
1                 ['D_1', 'D_2', 'D_3', 'D_4']   D
2                 ['B_1', 'B_A']                 B 

您可以使用 json_normalize + groupby“集群”并将 join 应用于“名称”,将 first 应用于“子集”:

df = pd.json_normalize(data).groupby('cluster').agg({'subsets':'first','name':', '.join}).reset_index()

输出:

   cluster               subsets  name
0        0       [X_1, X_A, X_B]  A, C
1        1  [D_1, D_2, D_3, D_4]     D
2        2            [B_1, B_A]     B

为了完整起见,我认为可以公平地提及您实际上可以在您的情况下创建一个没有 json_normalize 的数据框并应用 groupby,如最初所示

import pandas as pd

data = [{'name': 'A', 'subsets': ['X_1', 'X_A', 'X_B'], 'cluster': 0},
 {'name': 'B', 'subsets': ['B_1', 'B_A'], 'cluster': 2},
 {'name': 'C', 'subsets': ['X_1', 'X_A', 'X_B'], 'cluster': 0},
 {'name': 'D', 'subsets': ['D_1', 'D_2', 'D_3', 'D_4'], 'cluster': 1}]

df = pd.DataFrame(data).groupby('cluster')
                       .agg({'subsets':'first','name':', '.join})
                       .reset_index()
                       .set_index('cluster')
                       .rename_axis('Cluster Number')
                             subsets  name
Cluster Number                            
0                    [X_1, X_A, X_B]  A, C
1               [D_1, D_2, D_3, D_4]     D
2                         [B_1, B_A]     B