如何拼接DataFrame的索引与列名生成仅含单条记录的新DataFrame
实现方法
假设你的原始统计量DataFrame命名为df,可以用pandas的unstack方法快速完成转换,代码如下:
import pandas as pd # 将原DataFrame展开为多层索引Series,再转置为单行DataFrame new_df = df.unstack().to_frame().T # 拼接多层索引生成符合要求的新列名:原列名_原行索引 new_df.columns = [f"{col}_{stat}" for col, stat in new_df.columns] # 验证结果 print(new_df.shape) # 输出 (1, 30) print(new_df)
方法说明
unstack()会把原DataFrame的列名作为第一层索引、原行索引作为第二层索引,将所有二维值转换为一维Seriesto_frame().T负责把一维Series转换为仅包含1行的DataFrame- 最后遍历多层索引拼接即可得到要求的列名格式,原数据类型(包括mode列的元组类型)会完整保留
如果更习惯用堆叠逻辑,也可以用下面的等价写法:
s = df.stack() s.index = [f"{col}_{stat}" for stat, col in s.index] new_df = s.to_frame().T
内容的提问来源于stack exchange,提问作者skwolvie
相关产品推荐
相关产品推荐

