python - 如何在 Python 熊猫中使用 pd.melt
问题描述
来自 csv 的这个数据框:
id name A B C gpa
0 1111 Phineas NaN B NaN 3.0
1 1113 Tilly NaN NaN C 2.5
2 1110 Andres A NaN NaN 3.8
3 1112 Jax NaN B NaN 3.2
4 1114 Ray NaN B NaN 3.1
5 1115 Koda NaN NaN C 2.4
6 1120 Bruno A NaN NaN 3.7
7 1134 Davis NaN NaN C 2.6
8 1102 Cassie A NaN NaN 4.0
我想要输出:
id name grade gpa
0 1111 Phineas B 3.0
1 1113 Tilly C 2.5
2 1110 Andres A 3.8
3 1112 Jax C 3.2
4 1114 Ray B 3.1
5 1115 Koda C 2.4
6 1120 Bruno A 3.7
7 1134 Davis C 2.6
8 1102 Cassie A 4.0
那是什么代码?
解决方案
使用combine_first
with ,在这种情况下drop
您不需要:melt
df['grade'] = df['A'].combine_first(df['B']).combine_first(df['C'])
df.drop(['A','B','C'], axis=1, inplace=True)
或者:
df['grade'] = df[['A','B','C']].values[df[['A','B','C']].notnull()]
df.drop(['A','B','C'], axis=1, inplace=True)
print(df)
id name gpa grade
0 1111 Phineas 3.0 B
1 1113 Tilly 2.5 C
2 1110 Andres 3.8 A
3 1112 Jax 3.2 B
4 1114 Ray 3.1 B
5 1115 Koda 2.4 C
6 1120 Bruno 3.7 A
7 1134 Davis 2.6 C
8 1102 Cassie 4.0 A
推荐阅读
- ssl - OpenLDAP SSL 集成 - 修改 cn=config 的 ACL 权限
- django - 我如何在 django 的表单小部件上使用阿拉伯语或法语日期格式
- codeigniter - CodeIgniter Ion Auth 忘记密码重置链接不包含服务器 IP 地址
- python - 将系列转换为诊断数据框,所有其他元素为零
- azure - Azure 订阅标签:如何删除空标签值?
- javascript - 将字体系列与字体名称节点 js 分开
- codenameone - 代号为一的内存数据库
- java - Java的--add-export在jlinking期间没有效果
- java - Spring Boot JacksonTester 自定义序列化程序未注册
- javascript - 比较文章和按钮的数据