我有一个输入列表,例如:
A1A
B1A
C2D
B1A
D3C
B2D
...
我希望输出一个像这样的数据透视表:
列出第一个字符作为行名并计算剩余的单个字符。
我试图先将列表转换成 dic 格式
input = ['A1A', 'B1A', 'C2D', 'B1A', 'D3C', 'B2D']
dict_r = {}
for id in input:
result.setdefault(id[0], []).append(id)
我不知道接下来我能做什么。
最佳答案
您可以使用 str.extract
和 pandas.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/