txt 到 python 中具有相同大小行的数组或数据框

txt to array or data frame in python with same size rows

我正在使用 python 和 numpy!我有一个包含整数的 txt 文件,space 分隔,文件的每一行必须是数组或数据框中的一行。问题是不是每一行都有相同的大小!我知道我希望他们拥有的大小,我想将数字零放入缺失值中!由于不是逗号分隔,我找不到办法做到这一点!我想知道是否有办法找到数组每一行的长度并添加适当数量的零!那可能吗?还有其他想法吗?如您所见,我是 numpy 库的新手..

您知道数据中的列数,这可以使用 pandas read_csv 来完成。如果 'test.txt' 是您要读取的文件:

df = pd.read_csv("test.txt", sep=" ", names=["col1", "col2", "col3", "col4", "col5"])
df.fillna(0, inplace=True)
print(df)
    col1    col2    col3    col4    col5
0   1       2       3       4.0     NaN
1   1       2       3       NaN     NaN
2   1       2       3       4.0     5.0

我已将列命名为 'colX',但您当然可以放任何您喜欢的东西。

如果你想从这里获取numpy数组,你可以调用df.values:

array([[1., 2., 3., 4., 0.],
       [1., 2., 3., 0., 0.],
       [1., 2., 3., 4., 5.]])

由于问题不包含太多细节,但假设文本文件看起来像

3 4 12 7 9
3 4 8  7
9   9 
1 2   3

因此,在文件中,连续的空格表示缺失值。

有问题,如果可以添加示例文本文件,那么,解决方案可以更具体。

基于假设,这是一个可能的解决方案

import numpy as np
import pandas as pd

with open(r"path\to\the\text\file\file.txt", "r") as f:
    val = np.array([[int(y) if y!="" else 0 for y in x.split(" ")] for x in f.read().split("\n")])

df = pd.DataFrame(val)