如何基于行模式拆分以NA为分隔符的凌乱数据为DataFrame列表
拆分以NA分隔的表格数据为多个DataFrame列表
实现步骤
- 清理原始数据:按行拆分、过滤空行、去除每行首尾空格
- 以
NA为分隔标识,将数据分割成多个独立表格块 - 将每个表格块转换为Pandas DataFrame,并自动转换数值列类型
完整代码
import pandas as pd # 原始输入数据 raw_data = """id V1 Player Score Kevin 8 Michael 7 Ralf 2 NA Player Value Kevin 6 Michael 1 Ralf 2 NA""" # 1. 预处理数据行 lines = [line.strip() for line in raw_data.split('\n') if line.strip()] # 2. 按NA分割表格块 data_blocks = [] current_block = [] for line in lines: if line == 'NA': if current_block: data_blocks.append(current_block) current_block = [] else: current_block.append(line) # 处理最后一个未被NA收尾的块 if current_block: data_blocks.append(current_block) # 3. 转换为DataFrame列表 df_list = [] for block in data_blocks: header = block[0].split() data_rows = [row.split() for row in block[1:]] df = pd.DataFrame(data_rows, columns=header) # 转换数值列类型 for col in df.columns[1:]: df[col] = pd.to_numeric(df[col]) df_list.append(df) # 查看结果 for idx, df in enumerate(df_list, 1): print(f"=== 第{idx}个DataFrame ===") print(df)
输出结果
df_list即为包含两个独立DataFrame的列表,输出如下:
第一个DataFrame:
Player Score 0 Kevin 8 1 Michael 7 2 Ralf 2
第二个DataFrame:
Player Value 0 Kevin 6 1 Michael 1 2 Ralf 2
内容的提问来源于stack exchange,提问作者writer_typer
相关产品推荐
相关产品推荐

