【问题标题】:How do I open a binary matrix and convert it into a 2D array or a dataframe?如何打开二进制矩阵并将其转换为二维数组或数据帧?
【发布时间】:2018-06-30 09:25:14
【问题描述】:

我在一个 txt 文件中有一个二进制矩阵,如下所示:

0011011000
1011011000
0011011000
0011011010
1011011000
1011011000
0011011000
1011011000
0100100101
1011011000

我想把它变成一个二维数组或数据框,其中每列有一个数字,行如图所示。我试过使用 numpy 和 pandas,但输出只有一列包含整数。我希望能够将整列称为数字。

我尝试过的代码之一是:

with open("a1data1.txt") as myfile:
    dat1=myfile.read().split('\n')
dat1=pd.DataFrame(dat1)

【问题讨论】:

  • 嗯,所以 read_fwf 不起作用?还是有什么问题?
  • read_fwf 也可以,但它需要我知道宽度,在打开文件之前我不一定知道。

标签: python arrays pandas numpy dataframe


【解决方案1】:

阅读完你的txt后,你可以使用下面的代码修复它

pd.DataFrame(df[0].apply(list).values.tolist())
Out[846]: 
   0  1  2  3  4  5  6  7  8  9
0  0  0  1  1  0  1  1  0  0  0
1  1  0  1  1  0  1  1  0  0  0
2  0  0  1  1  0  1  1  0  0  0
3  0  0  1  1  0  1  1  0  1  0
4  1  0  1  1  0  1  1  0  0  0
5  1  0  1  1  0  1  1  0  0  0
6  0  0  1  1  0  1  1  0  0  0
7  1  0  1  1  0  1  1  0  0  0
8  0  1  0  0  1  0  0  1  0  1
9  1  0  1  1  0  1  1  0  0  0

【讨论】:

  • @S.Quon 如果你喜欢这些答案,你可以第八次投票并接受它:-)
【解决方案2】:

read_fwf与参数widths一起使用:

df = pd.read_fwf("a1data1.txt", header=None, widths=[1]*10)

print (df)
   0  1  2  3  4  5  6  7  8  9
0  0  0  1  1  0  1  1  0  0  0
1  1  0  1  1  0  1  1  0  0  0
2  0  0  1  1  0  1  1  0  0  0
3  0  0  1  1  0  1  1  0  1  0
4  1  0  1  1  0  1  1  0  0  0
5  1  0  1  1  0  1  1  0  0  0
6  0  0  1  1  0  1  1  0  0  0
7  1  0  1  1  0  1  1  0  0  0
8  0  1  0  0  1  0  0  1  0  1
9  1  0  1  1  0  1  1  0  0  0

【讨论】:

    猜你喜欢
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 2011-05-28
    相关资源
    最近更新 更多