如何用Python读取数据集整数值,跳过前5列并导入numpy/pandas数组?
解决方法:提取文本文件中的数值并存入NumPy/Pandas
我来帮你搞定这个需求!根据你给出的行格式,我们需要跳过前5列(其中第5列是包含空格的"Nrn de"),然后提取后面的数值并存储到NumPy数组或Pandas DataFrame里。下面分两种方式实现:
方法一:使用Pandas(推荐,处理结构化数据更灵活)
Pandas能轻松处理这种带不规则列的文本,我们可以逐行解析后构建DataFrame:
import pandas as pd def parse_line(line): # 按空白拆分每行内容,过滤掉空行 tokens = line.strip().split() # 前5列对应前6个token(因为第5列是"Nrn de"两个单词),所以从第7个token开始取数值 numeric_values = [float(token) for token in tokens[6:]] return numeric_values # 读取文件并处理每一行 processed_data = [] with open("your_dataset.txt", "r") as file: for line in file: if line.strip(): # 跳过空行 processed_data.append(parse_line(line)) # 转为Pandas DataFrame df = pd.DataFrame(processed_data) # 如果需要转为NumPy数组 numpy_array = df.to_numpy() # 可选:如果确实只需要整数,可以转换类型 # df = df.astype(int) # numpy_array = numpy_array.astype(int)
方法二:直接使用NumPy
如果你更倾向于用NumPy处理,也可以直接解析后生成数组:
import numpy as np # 读取所有非空行 with open("your_dataset.txt", "r") as file: lines = [line.strip() for line in file if line.strip()] # 解析每行的数值部分 data_list = [] for line in lines: tokens = line.split() # 同样跳过前6个token,提取后续数值并转成float nums = [float(t) for t in tokens[6:]] data_list.append(nums) # 转为NumPy数组 numeric_array = np.array(data_list) # 可选:转成整数类型 # numeric_array = numeric_array.astype(int)
关键说明
- 为什么取
tokens[6:]?因为你的示例行中,前5列对应前6个单词(前4列各1个单词,第5列是"Nrn de"两个单词),所以从索引6开始的部分就是我们需要的数值列。 - 示例中有
.1这样的小数,所以先用float转换,如果你确实只需要整数,最后加上.astype(int)即可。 - 代码里跳过了空行,避免处理无效内容。
内容的提问来源于stack exchange,提问作者Sir Cappery
相关产品推荐
相关产品推荐

