将Pandas列按空格拆分为多列并合并多源Excel文件
Got it!我来一步步帮你解决这两个问题,都是处理多空格分隔数据的常见场景,往下看:
1. 用空格将Pandas中的一列拆分为多列
如果你的列里是多个连续空格分隔的值,直接按单个空格拆分会产生空列,所以得用正则匹配任意多空格来处理。这里用Pandas的str.split()方法,搭配expand=True参数直接生成多列:
import pandas as pd # 先读取你的数据(比如从Excel导入) df = pd.read_excel("your_single_file.xlsx") # 拆分多空格分隔的列:r'\s+'匹配1个或多个空格,expand=True直接转为多列 split_columns = df['目标列名'].str.split(r'\s+', expand=True) # 给新拆分的列命名(比如col1、col2...) split_columns.columns = [f'拆分列{i+1}' for i in range(split_columns.shape[1])] # 如果需要和原数据合并,用concat拼接 final_df = pd.concat([df, split_columns], axis=1)
要是你不确定原列名,也可以用索引选取,比如df.iloc[:, 0]代表第一列。
2. 合并多个仅含一列多空格分隔数据的Excel文件
这个需求可以拆成「遍历读取文件→拆分列→合并所有数据」三个步骤,代码里还加了来源文件名的追踪,方便你后续排查:
import pandas as pd import os # 第一步:设置存放所有Excel文件的文件夹路径 folder_path = "你的Excel文件夹路径" # 第二步:筛选出文件夹里所有Excel文件(.xlsx和.xls都覆盖) excel_files = [ f for f in os.listdir(folder_path) if f.lower().endswith(('.xlsx', '.xls')) ] # 初始化空列表,用来存每个文件处理后的结果 processed_data = [] for file_name in excel_files: # 拼接完整文件路径 file_path = os.path.join(folder_path, file_name) # 读取文件的第一列(因为所有源文件只有一列) single_col_df = pd.read_excel(file_path, usecols=[0]) # 拆分列,和上面的逻辑一致 split_df = single_col_df.iloc[:, 0].str.split(r'\s+', expand=True) # 添加一列记录来源文件名,方便溯源 split_df['来源文件'] = file_name # 把处理好的数据加入列表 processed_data.append(split_df) # 第三步:合并所有处理后的数据框 merged_result = pd.concat(processed_data, ignore_index=True) # 给合并后的列命名(最后一列是来源文件) col_names = [f'数据列{i+1}' for i in range(merged_result.shape[1]-1)] + ['来源文件'] merged_result.columns = col_names # 保存最终合并结果到新Excel merged_result.to_excel("合并后的结果.xlsx", index=False)
小提示
如果不同文件拆分后的列数不一样,Pandas会自动在缺列的地方补NaN,这是正常现象;要是你确定所有文件的拆分列数一致,可以直接指定固定的列名,不用动态生成。
内容的提问来源于stack exchange,提问作者techscolasticus
相关产品推荐
相关产品推荐

