如何从具有不同长度的列表字典创建汇总表?

问题描述 投票:0回答:1

我的输入是这个字典:

response = {
    'A': ['CATEGORY 2'],
    'B': ['CATEGORY 1', 'CATEGORY 2'],
    'C': [],
    'D': ['CATEGORY 3'],
}

我正在尝试制作这种数据框:

|  ITEM  |  CATEGORY 1  |  CATEGORY 2  |  CATEGORY 3  |
|   A    |              |      x       |              |
|   B    |      x       |      x       |              |
|   C    |              |              |              |
|   D    |              |              |      x       |

为此,我编写了下面的代码,但结果却出乎意料。

df = pd.DataFrame.from_dict(response, orient='index').fillna('x')

df = df.reset_index()

df = df.rename(columns={'index': 'ITEM'})

print(df)

  ITEM           0           1
0    A  CATEGORY 2           x
1    B  CATEGORY 1  CATEGORY 2
2    C           x           x
3    D  CATEGORY 3           x

你们有解决办法吗?我愿意接受任何建议。

python pandas
1个回答
0
投票

使用

str.get_dummies

out = (pd.Series(map('|'.join, response.values()), index=response.keys())
         .rename_axis('ITEM')
         .str.get_dummies()
         .reset_index()
      )

输出:

  ITEM  CATEGORY 1  CATEGORY 2  CATEGORY 3
0    A           0           1           0
1    B           1           1           0
2    C           0           0           0
3    D           0           0           1
© www.soinside.com 2019 - 2024. All rights reserved.