首页 > 解决方案 > 删除存在空值的列的重复项

问题描述

我有一个数据框 df1,第 1 列(col1)包含客户 ID。Col2 填充了销售额,并且缺少一些值

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

我试着写一个函数说:

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

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

感谢您的阅读。将不胜感激一个解决方案

标签: pythonpandasmissing-data

解决方案


以下应该工作,使用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

推荐阅读