使用可变列数解析数据



我有几个.txt文件,每个文件有 140k+ 行。它们都有三种类型的数据,它们是字符串和浮点数的混合:- 7 坳- 14 坳- 18 坳

解析此类数据的最佳和最快方法是什么?

我尝试将numpy.genfromtxt与usecols=np.arange(0,7(一起使用,但显然删除了14和18 col数据。

# for 7 col data
load = np.genfromtxt(filename, dtype=None, names=('day', 'tod', 'condition', 'code', 'type', 'state', 'timing'), usecols=np.arange(0,7))

我想尽可能高效地解析数据。

解决方案相当简单直观。我们检查每行中的列数是否等于指定的数字并将其附加到数组中。为了更好地分析/修改我们的数据,我们可以根据需要将其转换为 Pandas 数据帧或 Numpy,下面我显示了对数据帧的转换。我的数据集中的列数分别为 7、14 和 18。我希望标记我的数据,这样我就可以使用 Pandas 的列从数组中标记。

import pandas as pd
filename = "textfile.txt"
labels_array1 = [] # 7 labels
labels_array2 = [] # 14 labels
labels_array3 = [] # 18 labels
with open(filename, "r") as f:
    lines = f.readlines()
    for line in lines:
        num_items = len(line.split())
        if num_items==7:
            array1.append(line.rstrip())
        elif num_items==14:
            array2.append(line.rstrip())
        elif num_items==18:
            array3.append(line.rstrip())
        else:
            print("Detected a line with different columns.", num_items)
df1 = pd.DataFrame([sub.split() for sub in array1], columns=labels_array1)
df2 = pd.DataFrame([sub.split() for sub in array2], columns=labels_array2)
df3 = pd.DataFrame([sub.split() for sub in array3], columns=labels_array3)

相关内容

  • 没有找到相关文章

最新更新