如何将多行分割的字符串列表转换为Python DataFrame
如何将竖线分隔的字符串列表转换为Pandas DataFrame?
嘿,我来帮你搞定这个需求!你手里的字符串列表是用splitlines()得到的,每个元素用竖线|分隔,想要转成带表头的DataFrame,其实有两种很实用的方法,我给你详细说说:
方法一:用Pandas内置的read_csv(最简便高效)
Pandas本身就有处理这类分隔符数据的工具,我们可以把列表转成换行分隔的字符串,再用StringIO模拟文件对象,直接用read_csv读取,一步到位:
import pandas as pd X = ["NAME|Contact|Education","SMITH|12345|Graduate","NITA|11111|Diploma"] # 把列表转成换行分隔的字符串,再用StringIO模拟文件 df = pd.read_csv(pd.io.common.StringIO('\n'.join(X)), sep='|') print(df)
这样运行后,直接就能得到你想要的结构,表头会自动取列表的第一行,数据行也会对应匹配。
方法二:手动循环处理(适合理解底层逻辑)
如果你想自己通过循环来实现,需要先区分表头和数据行,避免你原来代码里的索引问题,具体步骤如下:
import pandas as pd X = ["NAME|Contact|Education","SMITH|12345|Graduate","NITA|11111|Diploma"] # 第一步:提取表头(列表的第一个元素) headers = X[0].split('|') # 第二步:循环处理后面的数据行,拆分成列表存入data_rows data_rows = [] for item in X[1:]: data_rows.append(item.split('|')) # 第三步:用表头和数据行创建DataFrame df = pd.DataFrame(data_rows, columns=headers) print(df)
最终输出结果
两种方法运行后都会得到如下的DataFrame:
NAME Contact Education 0 SMITH 12345 Graduate 1 NITA 11111 Diploma
内容的提问来源于stack exchange,提问作者Nirali Khoda
相关产品推荐
相关产品推荐

