我的输入是这个法令:

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

我正在try 制作这种藤壶:

|  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()
         #.replace({0: '', 1: 'x'}) # uncomment for Xs
         .reset_index()
      )

或者,使用词典理解:

out = (pd.DataFrame
  .from_dict({k: {v: 'X' for v in l} for k,l in response.items()},
             orient='index')
  .rename_axis('ITEM').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

使用X:

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

Python相关问答推荐

Polars LazyFrame在收集后未返回指定的模式顺序

为什么我的Python代码在if-else声明中的行之前执行if-else声明中的行?

抓取rotowire MLB球员新闻并使用Python形成表格

ModuleNotFound错误:没有名为flags.State的模块; flags不是包

如何让程序打印新段落上的每一行?

数据抓取失败:寻求帮助

如何使用表达式将字符串解压缩到Polars DataFrame中的多个列中?

Odoo 16使用NTFS使字段只读

从嵌套的yaml创建一个嵌套字符串,后面跟着点

处理具有多个独立头的CSV文件

如何求相邻对序列中元素 Select 的最小代价

什么是一种快速而优雅的方式来转换一个包含一串重复的列,而不对同一个值多次运行转换,

应用指定的规则构建数组

按条件添加小计列

python的文件. truncate()意外地没有截断'

Python协议不兼容警告

Django在一个不是ForeignKey的字段上加入'

SpaCy:Regex模式在基于规则的匹配器中不起作用

上传文件并使用Panda打开时的Flask 问题

用0填充没有覆盖范围的垃圾箱