微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas unstack单列

有什么建议去掉column = periodo_dia而不丢弃任何列?

原始数据框如下所示:

|   | year | month | day | periodo_dia | valor_medida | score_recogida |
|---|------|-------|-----|-------------|--------------|----------------|
| 0 | 2015 | 4     | 18  | manana      | 25.0         | 8.166667       |
| 1 | 2015 | 4     | 18  | noche       | 47.5         | 0.000000       |
| 2 | 2015 | 4     | 18  | tarde       | 20.0         | 0.000000       |
| 3 | 2015 | 4     | 19  | manana      | 0.0          | 0.000000       |
| 4 | 2015 | 4     | 19  | noche       | 0.0          | 4.066667       |

期望的数据框应该是:

| year | month | day | manana | tarde | noche | valor_medida | score_recogida |
|------|-------|-----|--------|-------|-------|--------------|----------------|
| 2015 | 4     | 18  | 1      | 0     | 0     | 25.0         | 8.166667       |
| 2015 | 4     | 18  | 0      | 0     | 1     | 47.5         | 0.000000       |
| 2015 | 4     | 18  | 0      | 1     | 0     | 20.0         | 0.000000       |

解决方法:

您可以使用get_dummiesastype将转换值转换为整数,dropconcat

df1 = pd.get_dummies(df['periodo_dia']).astype(int)
print df1
   manana  noche  tarde
0       1      0      0
1       0      1      0
2       0      0      1
3       1      0      0
4       0      1      0

#drop column periodo_dia
df = df.drop('periodo_dia',axis=1)

print pd.concat([df, df1], axis=1)
   year  month  day  valor_medida  score_recogida  manana  noche  tarde
0  2015      4   18          25.0        8.166667       1      0      0
1  2015      4   18          47.5        0.000000       0      1      0
2  2015      4   18          20.0        0.000000       0      0      1
3  2015      4   19           0.0        0.000000       1      0      0
4  2015      4   19           0.0        4.066667       0      1      0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐