删除存在空值的列的重复项

问题描述

我有一个数据框 df1,第 1 列 (col1) 包含客户 ID。 Col2 填满了销售额,部分值缺失

我的问题是我只想删除 col1 中缺少销售价值的重复客户 ID。

我试着写一个函数说:

def drop(i):
          if i[col2] == np.nan:
             i.drop_duplicates(subset = 'col1')
          else:
             return i['col1']

我收到一个错误,说系列的真值不明确

感谢您的阅读。希望得到解决方

解决方法

以下应该有效,使用 groupbyapplydropnareset_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