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

# 读取weightlifting数据集
weightlifting = pd.read_csv('data/weightlifting_men.csv')
weightlifting
  Weight Category M35 35-39 M40 40-44 M45 45-49 M50 50-54 M55 55-59 M60 60-64 M65 65-69 M70 70-74 M75 75-79 M80 80+
0 56 137 130 125 115 102 92 80 67 62 55
1 62 152 145 137 127 112 102 90 75 67 57
2 69 167 160 150 140 125 112 97 82 75 60
3 77 182 172 165 150 135 122 107 90 82 65
4 85 192 182 175 160 142 130 112 95 87 70
5 94 202 192 182 167 150 137 120 100 90 75
6 105 210 200 190 175 157 142 122 102 95 80
7 105+ 217 207 197 182 165 150 127 107 100 85
pandas.melt 使用参数:

pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
参数解释:

frame:要处理的数据集。

id_vars:不需要被转换的列名。

value_vars:需要转换的列名,如果剩下的列全部都要转换,就不用写了。

var_name和value_name是自定义设置对应的列名。

col_level :如果列是MultiIndex,则使用此级别。
# 用melt方法,将sex_age放入一个单独的列
wl_melt = weightlifting.melt(id_vars='Weight Category', 
                                     var_name='sex_age', 
                                     value_name='Qual Total')
wl_melt.head()
  Weight Category sex_age Qual Total
0 56 M35 35-39 137
1 62 M35 35-39 152
2 69 M35 35-39 167
3 77 M35 35-39 182
4 85 M35 35-39 192
# 用split方法将sex_age列分为两列;
#expand表示是否把series类型转化为DataFrame类型
sex_age = wl_melt['sex_age'].str.split(expand=True)
sex_age.head()
  0 1
0 M35 35-39
1 M35 35-39
2 M35 35-39
3 M35 35-39
4 M35 35-39
# 给列起名
sex_age.columns = ['Sex', 'Age Group']
sex_age.head()
  Sex Age Group
0 M35 35-39
1 M35 35-39
2 M35 35-39
3 M35 35-39
4 M35 35-39
# 只取出字符串中的M
sex_age['Sex'] = sex_age['Sex'].str[0]
sex_age.head()
  Sex Age Group
0 M 35-39
1 M 35-39
2 M 35-39
3 M 35-39
4 M 35-39
# 用concat方法,将sex_age,与wl_cat_total连接起来
wl_cat_total = wl_melt[['Weight Category', 'Qual Total']]
wl_tidy = pd.concat([sex_age, wl_cat_total], axis='columns')
wl_tidy.head()
  Sex Age Group Weight Category Qual Total
0 M 35-39 56 137
1 M 35-39 62 152
2 M 35-39 69 167
3 M 35-39 77 182
4 M 35-39 85 192
# 上面的结果也可以如下实现
cols = ['Weight Category', 'Qual Total']
sex_age[cols] = wl_melt[cols]

猜你喜欢

转载自blog.csdn.net/weixin_48135624/article/details/114176396