如何基于强度值1130.07拆分合并生成的大型dataframe
实现方案
用pandas可以快速完成拆分,核心思路是先给不同的原始数据集打分组标识,再按分组拆分转成多列格式。
完整代码示例
import pandas as pd import numpy as np # 1. 生成分组标识:匹配到强度1130.07时切换分组 # atol参数可根据实际数值精度调整,避免浮点数存储误差导致匹配失败 # 若1130.07是每组的结束行,保留下面的shift操作;若是起始行直接删除shift部分即可 df['group_id'] = np.isclose(df['intensity'], 1130.07, atol=1e-4).cumsum().shift(1, fill_value=0) # 2. 按分组拆分转成多列 # 仅提取波长列作为新列的写法: result = df.groupby('group_id')['wavelength'].apply( lambda x: x.reset_index(drop=True) ).unstack(level=0) # 可选:自定义列名 result.columns = [f'dataset_{i+1}' for i in range(result.shape[1])]
补充说明
- 要是需要同时保留每组的强度和波长数据,把第二步
groupby后的列换成['intensity', 'wavelength']即可,最终会生成多层列名的DataFrame,第一层是字段名,第二层是数据集编号 - 不同原始数据集长度不一致时,较短的数据集末尾会自动填充NaN
内容的提问来源于stack exchange,提问作者zenezko
相关产品推荐
相关产品推荐

