python - 删除存在空值的列的重复项
问题描述
我有一个数据框 df1,第 1 列(col1)包含客户 ID。Col2 填充了销售额,并且缺少一些值
我的问题是,我只想在缺少销售价值的地方删除 col1 中的重复客户 ID。
我试着写一个函数说:
def drop(i):
if i[col2] == np.nan:
i.drop_duplicates(subset = 'col1')
else:
return i['col1']
我收到一个错误,说系列的真值不明确
感谢您的阅读。将不胜感激一个解决方案
解决方案
以下应该工作,使用groupby,apply,dropna,reset_index
假设您的数据是这样的
输入:
col1 col2
0 1001 2.0
1 1001 NaN
2 1002 4.0
3 1002 NaN
代码:
import pandas as pd
import numpy as np
#Dummy data
data = {
'col1':[1001,1001,1002,1002],
'col2':[2,np.nan,4,np.nan],
}
df = pd.DataFrame(data)
#Solution
df.groupby('col1').apply(lambda group: group.dropna(subset=['col2'])).reset_index(drop=True)
输出:
col1 col2
0 1001 2.0
1 1002 4.0
推荐阅读
- python - 如何在 python wheel 中打包 perl 文件
- apache-spark - Spark sql查询给出数据类型未匹配错误
- angular - 更改角度材料中的默认图标
- python-3.x - 创建一个字典,它使用另一个字典中的相同对,但键被翻译
- python - PySpark 应用程序在 Yarn 集群模式下提交错误
- sql - 这可以是嵌套查询吗
- c++-cli - 从 cli 中的线程(在按钮单击时创建)更新主 GUI 中的文本框
- sql-server - 如何修复SSRS每页中的组数
- javascript - 在悬停项 CSS/Javascript 上显示文本
- python-3.x - 如何为不同的不同环境引用具有固定名称的不同配置文件