GeekyRyan 2022-03-12 09:53 采纳率: 100%
浏览 65
已结题

Pandas如何把多列的数据转换成行

问题遇到的现象和发生背景

有一个表格, 计算一个国家的生产总值, 字段名称是国家, 然后多个年分别是多个列, 如1960, 1961, .... 2000等

img

, 我想使用pandas该成,年号用行来表示,变成:

img


应该怎么弄过?请来帮个忙

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

3条回答 默认 最新

  • 丨封尘绝念斩丨 2022-03-12 10:57
    关注
    
    df = pd.read_excel(file_path)
    
    columns = df.columns.values
    
    # 需要转置的那部分 DF
    row_n = df.shape[0] -1
    col_n = df.shape[1] - 4
    
    ret = []  # 大列表来存储所有的
    
    # 外层水平向右1列, 内层垂直向下遍历移多行
    for i in range(col_n):
        for j in range(row_n):
            # 索引取值 iloc[行索引,列索引] 即可
            lst = [
                
                # 先取前四列, j+1 是为了跳过第 2 行
                df.iloc[j+1, 0], df.iloc[j+1, 1],
                df.iloc[j+1, 2], df.iloc[j+1, 3],
                
                # 再取当前列的, 前两行, 和 对应的值 (i,j) 再来3个字段
                
                columns[i+4], # 当前的列名, columns 是列字段列表
                df.iloc[0, i+4],  # 第一行,当前列的那个值, 即字段下面那个
                df.iloc[j+1, i+4] # j 是不断往下走, 边走边取值
            ]
            
            # 每一次取值, 则作为新数据的一行
            ret.append(lst)
            
    # 最后再将这个新的二维数据变为 DataFrame, cols 自定义, 存 Excel 即可
          
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月12日
  • 创建了问题 3月12日