如何从多个带注释的TXT文件创建Pandas DataFrame?
基于带注释的TXT文件创建Pandas DataFrame
文件结构示例
以下是4个目标TXT文件的内容(需跳过以#开头的注释行):
文件1
# Moteur conçu par le Poly Propulsion Lab (PPL) nom=Tondeuse # Propriétés générales hauteur=0.5 masse=20.0 prix=110.00 # Propriétés du moteur impulsion specifique=80
文件2
# Moteur conçu par le Poly Propulsion Lab (PPL) nom=Civic VTEC # Propriétés générales hauteur=2.0 masse=3000.0 prix=2968.00 # Propriétés du moteur impulsion specifique=205
文件3
# Moteur conçu par le Poly Propulsion Lab (PPL) nom=VelociRAPTOR # Propriétés générales hauteur=4.0 masse=2000.0 prix=6000.00 # Propriétés du moteur impulsion specifique=250
文件4
# Moteur conçu par le Poly Propulsion Lab (PPL) nom=La Puissance # Propriétés générales hauteur=12.0 masse=15000.0 prix=39000.00 # Propriétés du moteur impulsion specifique=295
期望输出
最终需要生成如下结构的Pandas DataFrame:
nom hauteur masse prix impulsion specifique 0 Tondeuse 0.5 20.0 110.0 80 1 Civic VTEC 2.0 3000.0 2968.0 205 2 VelociRAPTOR 4.0 2000.0 6000.0 250 3 La Puissance 12.0 15000.0 39000.0 295
解决方案
通过以下Python代码即可实现需求:
import pandas as pd import os # 替换为你的TXT文件所在目录路径 target_dir = "." file_paths = [os.path.join(target_dir, f) for f in os.listdir(target_dir) if f.endswith('.txt')] data_list = [] for file_path in file_paths: motor_info = {} with open(file_path, 'r', encoding='utf-8') as f: for line in f: cleaned_line = line.strip() # 跳过注释行和空行 if cleaned_line.startswith('#') or not cleaned_line: continue # 拆分键值对,仅按第一个等号分割 key, val = cleaned_line.split('=', 1) # 自动转换数据类型 try: val = float(val) if val.is_integer(): val = int(val) except ValueError: pass motor_info[key] = val data_list.append(motor_info) # 生成DataFrame并调整列顺序 df = pd.DataFrame(data_list) df = df[['nom', 'hauteur', 'masse', 'prix', 'impulsion specifique']] print(df)
内容的提问来源于stack exchange,提问作者Jotunes
相关产品推荐
相关产品推荐

