# 加载数据
import pandas as pd
df_old1 = pd.read_excel(r"D:\Jupyter\data\Python.xlsx",sheet_name = "变一维")
df_old1
# 数据清洗,把第一列设为索引列
df_old2 = pd.read_excel(r"D:\Jupyter\data\Python.xlsx",sheet_name = "变一维",index_col = 0)
df_old2
# 重置索引
df_old3 = df_old2.reset_index()
df_old3
将列名转换为列数据
这里我们需要用到pandas的.melt()函数,melt()是逆转操作函数,可以将列名转换为列数据(columns_name → column_values),重构DataFrame,用法如下:
data3=data2.melt(id_vars='index', var_name='year',value_name='stu_num')
data3
参数解释:
DataFrame:要处理的数据集;
id_vars:不需要被转换的列名;
value_vars:需要转换的列名,如果剩下的列全部都要转换,就不用写了;
var_name和value_name是自定义设置对应的列名;
col_level :如果列是MultiIndex,则使用此级别。
结果如下:
# 将二维转一维
df_new = df_old3.melt(id_vars = "index",var_name = "年份", value_name = "销售额")
df_new
最后一步到位:
# 一步到位
import pandas as pd
df_melt = pd.read_excel(r"D:\Jupyter\data\Python.xlsx",sheet_name = "变一维",index_col = 0).reset_index().melt(id_vars = "index",var_name = "年份",value_name = "销售额").rename(columns = {"index" : "省份"})
df_melt
文末小结:小明大佬说:噢,那你们好好补补基础。我觉得很有道理!