python - 使用python将 'repetitive' 2D数组转换为矩阵

标签 python pandas numpy matrix transformation

我有一个文本文件,其中包含以下形式的信息:

A  0
B  1
C  4
D  0
E  1
A  0
B  0
C  2
D  1
E  1
A  1
B  0
C  2
D  0
E  0
...

请注意,如果不计算 ABCDE 循环的总数(此处仅显示 3 个),则无法得知它们。 我想使用 Python 将其转换为以下形式的矩阵:

A  0 0 1 ...
B  1 0 0 ...
C  4 2 2 ...
D  0 1 0 ...
E  1 1 0 ...

我不确定进行此类转换的最佳方法是什么,有人作为 python 脚本执行此操作吗? Numpy 或 Pandas 中是否有任何函数可以轻松做到这一点?或者我应该在没有 Numpy 或 Pandas 的情况下进行此操作?

非常感谢您的帮助!

最佳答案

Pandas 解决方案:

import pandas as pd
from pandas.compat import StringIO

temp=u"""
A  0
B  1
C  4
D  0
E  1
A  0
B  0
C  2
D  1
E  1
A  1
B  0
C  2
D  0
E  0"""
#after testing replace StringIO(temp) to filename
df = pd.read_csv(StringIO(temp), sep="\s+", header=None)
print (df)
    0  1
0   A  0
1   B  1
2   C  4
3   D  0
4   E  1
5   A  0
6   B  0
7   C  2
8   D  1
9   E  1
10  A  1
11  B  0
12  C  2
13  D  0
14  E  0
df = pd.pivot(index=df[0], columns=df.groupby(0).cumcount(), values=df[1])
print (df)
   0  1  2
0         
A  0  0  1
B  1  0  0
C  4  2  2
D  0  1  0
E  1  1  0

关于python - 使用python将 'repetitive' 2D数组转换为矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41137343/

相关文章:

python - 有没有一种有效的方法来绕过嵌套的 for 循环?

python - 在 python 中返回多个值并将它们附加到数据帧的唯一列

python - (稀疏)2D numpy 数组每行/列的快速非零索引

python - 用另一个字典更新一个字典,但只有非 None 值

python - 可能的 numpy 值格式字符串有哪些?

C++ 相当于 Python difference_update?

python - 如何检查列中的所有值是否满足 Data Frame 中的条件?

python - 根据字符串是否由特定字母组成来过滤数据框

python - Scipy 稀疏矩阵乘法

python - 如何将两个列表中的所有值相乘并获得相应的矩阵