微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 从Pandas dataFrame中删除重复项,条件是保留原始数据

假设我有以下DataFrame:

 A | B
 1 | Ms
 1 | PhD
 2 | Ms
 2 | Bs

我想删除关于A列的重复行,并且我想保留B列中值为’PhD’的行作为原始行,如果我没有找到’PhD’,我想保留行B栏中的“B”.

我正在尝试使用

 df.drop_duplicates('A') 

有条件的

解决方法:

>>> df
    A   B
0   1   Ms
1   1   Ms
2   1   Ms
3   1   Ms
4   1   PhD
5   2   Ms
6   2   Ms
7   2   Bs
8   2   PhD

使用自定义函数对数据框进行排序:

def sort_df(df, column_idx, key):
    '''Takes a dataframe, a column index and a custom function for sorting, 
    returns a dataframe sorted by that column using that function'''

    col = df.ix[:,column_idx]
    df = df.ix[[i[1] for i in sorted(zip(col,range(len(col))), key=key)]]
    return df

我们的排序功能

cmp = lambda x:2如果’PhD’在x中则为1,如果’Bs’在x中则为0

在行动:

sort_df(df,’B’,cmp).drop_duplicates(‘A’,take_last = True)

    A   B
4   1   PhD
8   2   PhD

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐