如何在Pandas中转置DataFrame后添加换行调整CSV输出格式
解决方案
一、遇到“current gimmik”时换行
转置后的DataFrame会把原表的行转为列,我们先将转置后的数据拉成一维序列,再以“current gimmik”为分割点拆分数据块,最后重新组合成规整的结构保存:
import pandas as pd # 读取数据并完成转置 data = pd.read_csv("wwe/maw.csv") df_transposed = data.transpose() # 将转置后的数据转为一维数组,保留原始顺序 flat_data = df_transposed.stack().values.flatten() # 定位所有"current gimmik"的出现位置 split_indices = [i for i, val in enumerate(flat_data) if val == "current gimmik"] # 补充首尾索引,确保分割覆盖全部数据 split_indices = [0] + split_indices[1:] + [len(flat_data)] # 按分割点拆分数据块 data_blocks = [flat_data[split_indices[i]:split_indices[i+1]] for i in range(len(split_indices)-1)] # 统一所有数据块的长度(填充NaN适配CSV格式要求) max_len = max(len(block) for block in data_blocks) new_df = pd.DataFrame([block.tolist() + [None]*(max_len - len(block)) for block in data_blocks]) # 保存结果,不生成额外索引和表头 new_df.to_csv("wwe/mawmaw_rule1.csv", index=False, header=False)
二、按每11列换行
把转置后的所有数据拉平,再按每11个元素为一组重新组织成新的行结构:
import pandas as pd # 读取数据并完成转置 data = pd.read_csv("wwe/maw.csv") df_transposed = data.transpose() # 将转置后的数据转为一维数组 flat_data = df_transposed.stack().values.flatten() # 按每11个元素分割成新行 chunk_size = 11 new_data = [flat_data[i:i+chunk_size] for i in range(0, len(flat_data), chunk_size)] # 转为DataFrame并保存 new_df = pd.DataFrame(new_data) new_df.to_csv("wwe/mawmaw_rule2.csv", index=False, header=False)
补充说明
如果需要同时生效两种规则,可以先按“current gimmik”分割出数据块,再对每个块内部执行每11个元素拆分的逻辑,最后合并所有拆分结果即可。
内容的提问来源于stack exchange,提问作者user19353374
相关产品推荐
相关产品推荐

