如何将多个文本文件指定列分别存入CSV的不同列?
解决方案
直接修改两处核心逻辑即可实现需求,以下是修正后的完整代码:
#!/usr/bin/python3 import numpy as np def read_csv(file_path): with open(file_path, "r") as f: lines = f.readlines() return lines[5025:] # 跳过前5025行,取剩余所有行 def extract_second_column(file_path): lines = read_csv(file_path) second_col = [] for elem in lines: parts = elem.split() # 避免空行或格式错误引发索引越界 if len(parts) >= 2: second_col.append(float(parts[1])) return second_col def combined_array(file_path_list): all_values = [] for file_path in file_path_list: col_data = extract_second_column(file_path) all_values.append(col_data) # 将列数据转置为行数据,使每个文件对应CSV的一列 return np.array(all_values).T def write_csv(data, csv_name ): # 使用逗号作为列分隔符,符合标准CSV格式 np.savetxt(csv_name, data, delimiter=",") # 执行逻辑 file_name_list = ["GLN-46_Coul.xvg","GLN-46_LJ.xvg","GLU-102_Coul.xvg","GLU-102_LJ.xvg"] data = combined_array(file_name_list) write_csv(data, "ENERGIES.csv")
关键修改说明
- 数组转置:在
combined_array中,将收集到的列数据通过np.array(all_values).T转置,把原本的「4个列数据」转换为「N行4列」的结构,这样每一行对应所有文件的同位置数据,保存后每个文件的数据会成为CSV的独立列。 - 分隔符调整:
write_csv中将delimiter="\n"改为delimiter=",",让numpy用逗号分隔列,生成标准的多列CSV文件。 - 容错处理:在提取第二列时增加
if len(parts) >=2判断,避免文件中出现空行或格式异常导致程序崩溃。
内容的提问来源于stack exchange,提问作者AitorVE
相关产品推荐
相关产品推荐

