如何从含“>”开头表头的列表创建多列Pandas DataFrame?
解决从列表创建多列Pandas DataFrame的问题
原始输入列表
raw_list = [ ">header", "a", "b", ">header2", "c", "d", "e", "f", ">header3", "g", "h", "i" ]
实现步骤与代码
核心思路是先按列标题拆分列表分组,再将每组数据转为Series后合并成DataFrame(Series会自动补全短列的缺失值):
import pandas as pd # 存储各列数据的字典 column_data = {} current_column = None # 遍历原始列表,拆分列标题和对应数据 for item in raw_list: if item.startswith(">"): # 识别到列标题,初始化该列的存储列表 current_column = item column_data[current_column] = [] else: # 将数据项添加到当前列的列表中 column_data[current_column].append(item) # 转换为DataFrame,短列自动补空值(NaN) df = pd.DataFrame({col: pd.Series(data) for col, data in column_data.items()}) # 打印结果 print(df)
输出结果
运行后得到的DataFrame与你期望的一致(注:你给出的期望结果中误将>header写为>header1,代码会保留原始列表中的列名):
>header >header2 >header3 0 a c g 1 b d h 2 NaN e i 3 NaN f NaN
显示时NaN会呈现为空单元格,完全符合需求。
内容的提问来源于stack exchange,提问作者haletha
相关产品推荐
相关产品推荐

