我的输入是这个字典:
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
你们有解决办法吗?我愿意接受任何建议。
使用
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