将具有 true/false 的 Pandas DataFrame 转换为字典

Convert a Pandas DataFrame with true/false to a dictionary

我想转换具有以下布局的数据框:

|  image  | finding1 | finding2 | nofinding |

| ------- | -------- | -------- | --------- |
| 039.png |   true   |   false  |   false   |
| 006.png |   true   |   true   |   false   |
| 012.png |   false  |   false  |   true    |

进入具有以下结构的字典:

{
  "039.png" : [
    "finding1"
  ],
  "006.png" : [
    "finding1",
    "finding2"
  ],
  "012.png" : [
    "nofinding"
  ]}

IIUC,您可以将 False 替换为 NA(这里假设布尔值为 False,对于字符串使用 'false'),然后 stack 删除值并使用 groupby.agg 聚合为转换为字典之前的列表:

dic = (df
 .set_index('image')
 .replace({False: pd.NA})
 .stack()
 .reset_index(1)
 .groupby(level='image', sort=False)['level_1'].agg(list)
 .to_dict()
)

输出:

{'039.png': ['finding1'],
 '006.png': ['finding1', 'finding2'],
 '012.png': ['nofinding']}