Python读取特定格式TXT文件并转换为目标DataFrame格式的求助
Python读取特定格式TXT文件并转换为目标DataFrame格式的求助
嘿,我来帮你搞定这个问题!你的TXT文件是类似**键: [值列表]**的自定义格式,不是标准CSV,所以直接用pd.read_csv()读出来肯定不符合预期,得先手动解析每行内容再构造DataFrame。
具体步骤和代码:
- 读取文件并逐行解析:先把文件内容读出来,然后拆分每行的键和值,清理掉多余的括号、引号和空格,把值转换成Python列表。
- 构造目标DataFrame:用解析后的列表直接生成DataFrame,还可以按需重命名列名。
import pandas as pd # 替换成你的txt文件路径 filename = "your_data.txt" # 读取文件内容,过滤空行 with open(filename, 'r') as f: lines = [line.strip() for line in f if line.strip()] # 初始化字典存储解析后的数据 parsed_data = {} for line in lines: # 拆分键和值部分(只按第一个冒号分割,避免值里有冒号的情况) key, value_part = line.split(': ', 1) # 去掉首尾的方括号,分割成单个元素 raw_values = value_part.strip('[]').split(',') # 清理每个元素的引号和空格 cleaned_values = [v.strip().strip("'") for v in raw_values] # 把mean列转换成数值类型(因为是浮点数) if key == 'mean': cleaned_values = [float(v) for v in cleaned_values] parsed_data[key] = cleaned_values # 生成目标DataFrame df = pd.DataFrame(parsed_data) # 如果需要把mean列重命名成你示例里的mean_e_field df = df.rename(columns={'mean': 'mean_e_field'}) print(df)
运行结果:
执行后会得到你想要的格式:
sub_ID ses_ID mean_e_field 0 sub-01 ses-01 0.3456 1 sub-02 ses-01 0.4460
小提示:
如果你的TXT文件里有格式小变动(比如冒号前后的空格不一致),可以调整split(': ', 1)为split(':'),然后对分割后的结果再用strip()清理空格就行~
备注:内容来源于stack exchange,提问作者gulo1221
相关产品推荐
相关产品推荐

