如何将文本文件中的字符串列表转换为Python Pandas DataFrame?
如何将空格分隔的字符串列表转换为Pandas DataFrame?
方法一:利用read_csv结合StringIO处理
这种方法直接模拟文件读取逻辑,自动适配多空格分隔的场景,简洁高效:
import pandas as pd from io import StringIO # 定义你的字符串列表 data = [ 'n Au[%] Ag[%] Cu[%] Zn[%] Ni[%] Pd[%] Fe[%] Cd[%] mq[ ]', '1 71.085 4.6578 22.468 1.6971 0.0292 0.0000 0.0627 0.0000 1.1019', '2 71.444 4.0611 22.946 1.4333 0.0400 0.0000 0.0763 0.0000 1.1298', '3 71.845 4.2909 22.308 1.4234 0.0293 0.0000 0.1031 0.0000 1.0750', '4 71.842 4.2794 22.290 1.4686 0.0339 0.0000 0.0856 0.0000 1.1334' ] # 将列表转为换行分隔的字符串,模拟文本文件内容 csv_content = '\n'.join(data) # 用read_csv读取,sep='\s+'匹配任意数量的空格作为分隔符 df = pd.read_csv(StringIO(csv_content), sep='\s+') # 查看生成的DataFrame print(df)
方法二:手动分割字符串后构建DataFrame
如果需要自定义处理逻辑(比如过滤无效值、特殊拆分规则),可以手动拆分每一行内容:
import pandas as pd data = [ 'n Au[%] Ag[%] Cu[%] Zn[%] Ni[%] Pd[%] Fe[%] Cd[%] mq[ ]', '1 71.085 4.6578 22.468 1.6971 0.0292 0.0000 0.0627 0.0000 1.1019', '2 71.444 4.0611 22.946 1.4333 0.0400 0.0000 0.0763 0.0000 1.1298', '3 71.845 4.2909 22.308 1.4234 0.0293 0.0000 0.1031 0.0000 1.0750', '4 71.842 4.2794 22.290 1.4686 0.0339 0.0000 0.0856 0.0000 1.1334' ] # 提取列名,按任意空格分割第一行 columns = data[0].split() # 处理数据行,拆分每一行并转为列表 data_rows = [row.split() for row in data[1:]] # 构建DataFrame并将所有列转换为数值型 df = pd.DataFrame(data_rows, columns=columns).apply(pd.to_numeric) # 查看生成的DataFrame print(df)
两种方法都能得到结构正确的DataFrame:方法一适合常规场景,代码量少;方法二灵活性更高,便于添加自定义处理步骤。
内容的提问来源于stack exchange,提问作者Arik setyawan
相关产品推荐
相关产品推荐

