有一个表格, 计算一个国家的生产总值, 字段名称是国家, 然后多个年分别是多个列, 如1960, 1961, .... 2000等
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 即可
我给个思路吧,因为你的描述我也看不懂。配了图之后更懵。
1、分别令df1=df.iloc[:,0:2]和df2=df.iloc[:,2:]
2、转置df2
3、再拼接