python - 以第一个字母为行并保留为列来旋转列表

标签 python pandas

我有一个输入列表,例如:

A1A
B1A
C2D
B1A
D3C
B2D
...

我希望输出一个像这样的数据透视表:

<表类="s-表"> <头> <日> 1A 3C <日>二维 <正文> 一个 1 B 2 1 C 1 D 1

列出第一个字符作为行名并计算剩余的单个字符。

我试图先将列表转换成 dic 格式

input = ['A1A', 'B1A', 'C2D', 'B1A', 'D3C', 'B2D']

dict_r = {}
for id in input:
  result.setdefault(id[0], []).append(id)

我不知道接下来我能做什么。

最佳答案

您可以使用 str.extractpandas.crosstab :

inp = ['A1A', 'B1A', 'C2D', 'B1A', 'D3C', 'B2D']

a,b = pd.Series(inp).str.extract('(.)(.+)').T.values

out = pd.crosstab(a, b).rename_axis(index=None, columns=None)

或者简单的列表理解:

a,b = zip(*((x[0], x[1:]) for x in inp))

out = pd.crosstab(a, b).rename_axis(index=None, columns=None)

输出:

   1A  2D  3C
A   1   0   0
B   2   1   0
C   0   1   0
D   0   0   1

关于python - 以第一个字母为行并保留为列来旋转列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72196645/

相关文章:

python - Django 模型 .get 失败,但 .filter 和 .all 有效 - 对象存在于数据库中

python - 为有效数据帧添加值并忽略无效解析

python - 从数据帧中提取字符串时,Pandas 不匹配零个或多个数字/字符

python - Matplotlib 显示重叠的 x-tick 标签

python - 根据其他数据帧值python为数据帧列赋予值

python - 带有 web.py 和 Google App Engine 的空白页面

python - 在 csv 文件中查找字符串时提取行

python - 如何使用 pyqt4 将小部件添加到网格布局的中心

python - 执行python脚本时,脚本在线程上阻塞,但不在交互模式下

pandas - 合并数据框的前两个并创建新的标题