重复值列拆分生成单值行:st8a按子组插入All Nangiobotide下方方案咨询


最高效实现方案
推荐用Python pandas库的分组向量化操作实现,避免逐行遍历的性能损耗,万行级数据可在毫秒级完成处理,代码示例如下:
import pandas as pd # 读取原始数据,可根据你的文件格式替换为read_csv等方法 df = pd.read_excel("your_data.xlsx") def insert_st8a_row(subgroup_df): # 定位当前子组All Nangiobotide行的插入位置 all_row_pos = subgroup_df[subgroup_df["treatment"] == "All Nangiobotide"].index[0] insert_pos = subgroup_df.index.get_loc(all_row_pos) + 1 # 取当前子组唯一的st8a值 st8a_unique = subgroup_df["st8a"].unique()[0] # 构造插入行:treatment填st8a值,其余公共列继承子组属性,st8a列可按需设空或保留原值 new_row = pd.Series({ "treatment": st8a_unique, "st8a": None, # 继承子组其余公共字段,可根据实际需求调整 **subgroup_df.iloc[0][[col for col in subgroup_df.columns if col not in ["treatment", "st8a"]]] }) # 拼接插入行后返回子组数据 return pd.concat([ subgroup_df.iloc[:insert_pos], new_row.to_frame().T, subgroup_df.iloc[insert_pos:] ], ignore_index=True) # 按子组列分组处理,将代码中的subgroup替换为你实际的子组列名 result = df.groupby("subgroup", group_keys=False).apply(insert_st8a_row).reset_index(drop=True) # 导出结果 result.to_excel("processed_output.xlsx", index=False)
如果是百万行级的超大数据集,可进一步用numpy定位所有插入位置后一次性拼接,相比groupby方案还能提升2倍左右的处理效率。
内容的提问来源于stack exchange,提问作者smackersz88
相关产品推荐
相关产品推荐

