Pandas 数据框到 python 字典,相关列名作为字典值存储在列表中

Pandas dataframe to python dictionary with relevant column names stored in list as dict values

我正在尝试从 pandas 数据框中获取数据并将其转换为所需的字典。这是数据示例:

    data =[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1],[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2]]
    Utable = pd.DataFrame(data, columns =['Type1', 'Type2', 'Type3', 'Type4', 'Type5', 'Type6', 'Type7', 'Type8', 'ID'])

我需要的字典是作为字典键的 ID 记录,值需要是从列名中确定的不可接受类型#s 的列表。如果类型为 0.0,则类型是不可接受的。所以对于这个例子,输出将是:

    {1: [1, 2, 3, 4, 5, 6, 7, 8], 2: [1, 2, 4, 5, 6, 7, 8]}

我可以弄清楚如何使用以下方法将类型值存储为列表,并将 ID 作为字典键:

    U = Utable.set_index('ID').T.to_dict('list')

给出:

   {1: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 2: [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0]} 

但我不知道如何从存储在列表中的列名中获取内容作为字典值。

非常感谢您的帮助。

转字典时可以使用参数orient=index;然后使用列表理解来获取所需的列表作为值:

out = {k: [int(i[-1]) for i, v in d.items() if v==0] 
       for k, d in Utable.set_index('ID').to_dict('index').items()}

输出:

{1: [1, 2, 3, 4, 5, 6, 7, 8], 2: [1, 2, 4, 5, 6, 7, 8]}