python - 删除重复行,但前提是列等于 NaN
问题描述
我只想删除两列(ID,代码)重复的行,但第三列(描述)等于'NaN'。我的数据框 df (如下所示)反映了我的初始数据框,而 df2 是我想要的。
df:
ID Descrip Code
1 NaN CC
1 3 SS
2 4 CC
2 7 SS
3 NaN CC
3 1 CC
3 NaN SS
4 20 CC
4 22 SS
5 15 CC
5 10 SS
6 100 CC
6 NaN CC
6 4 SS
6 NaN SS
df2:
ID Descrip Code
1 NaN CC
1 3 SS
2 4 CC
2 7 SS
3 1 CC
3 NaN SS
4 20 CC
4 22 SS
5 15 CC
5 10 SS
6 100 CC
6 4 SS
我知道使用 df.drop(subset['ID', 'Code'], keep='first') 会删除重复的行,但我只想要'Decrip' == 'NaN'。
解决方案
您可以使用groupby
并取最大值(每个数字都大于 NaN):
df2 = df.groupby(["ID", "Code"])["Descrip"].max().reset_index()
推荐阅读
- python - 如何将竞争词而不是单个词输入到fasttext模型
- javascript - 无法在javascript中读取数组元素的属性
- c# - 如何使用 swig 从`unsigned int *`返回`uint []`
- azure - 无需登录即可使用 Azure API(使用角色)
- mongodb - 如何从 mongodb 集合中查找最后读取的索引/记录以避免在进一步读取中重复?
- javascript - React Native 如何隐藏和显示具有键值的确切视图
- css - 如何在角度中使用 [ngStyle] 中的变量?
- node.js - 如何反编译Bytenode“jsc”文件?
- r - 错误:$ 运算符对原子向量无效(r 闪亮的 ggplot)
- r - 如何使用和修改用户通过fileinput函数上传的数据