将具有 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']}
我想转换具有以下布局的数据框:
| 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']}