11. 当多个变量被存储为列名和列值时进行清理
# 读取sensors数据集
In[84]: sensors = pd.read_csv('data/sensors.csv')
sensors
out[84]:
# 用melt清理数据
In[85]: sensors.melt(id_vars=['Group', 'Property'], var_name='Year').head(6)
out[85]:
# 用pivot_table,将Property列转化为新的列名
In[86]: sensors.melt(id_vars=['Group', 'Property'], var_name='Year') \
.pivot_table(index=['Group', 'Year'], columns='Property', values='value') \
.reset_index() \
.rename_axis(None, axis='columns')
out[86]:
更多
# 用stack和unstack实现上述方法
In[87]: sensors.set_index(['Group', 'Property']) \
.stack() \
.unstack('Property') \
.rename_axis(['Group', 'Year'], axis='index') \
.rename_axis(None, axis='columns') \
.reset_index()
out[87]: