11. 当多个变量被存储为列名和列值时进行清理

  1. # 读取sensors数据集
  2. In[84]: sensors = pd.read_csv('data/sensors.csv')
  3. sensors
  4. out[84]:

11. 当多个变量被存储为列名和列值时进行清理 - 图1

  1. # 用melt清理数据
  2. In[85]: sensors.melt(id_vars=['Group', 'Property'], var_name='Year').head(6)
  3. out[85]:

11. 当多个变量被存储为列名和列值时进行清理 - 图2

  1. # 用pivot_table,将Property列转化为新的列名
  2. In[86]: sensors.melt(id_vars=['Group', 'Property'], var_name='Year') \
  3. .pivot_table(index=['Group', 'Year'], columns='Property', values='value') \
  4. .reset_index() \
  5. .rename_axis(None, axis='columns')
  6. out[86]:

11. 当多个变量被存储为列名和列值时进行清理 - 图3

更多

  1. # 用stack和unstack实现上述方法
  2. In[87]: sensors.set_index(['Group', 'Property']) \
  3. .stack() \
  4. .unstack('Property') \
  5. .rename_axis(['Group', 'Year'], axis='index') \
  6. .rename_axis(None, axis='columns') \
  7. .reset_index()
  8. out[87]:

11. 当多个变量被存储为列名和列值时进行清理 - 图4