首页 > 解决方案 > 熊猫不删除重复项

问题描述

在以下脚本中

import pandas as pd

def start():
    df_dict = {"A": [1,2,3,3,4], "B": [1,2,2,3,4]}
    df = pd.DataFrame(df_dict)

    df.drop_duplicates(inplace = True, keep = "last")

    print(df)

if __name__ == "__main__":
    start()

中的重复项df不会被删除。可能是什么原因

电流输出:

   A  B
0  1  1
1  2  2
2  3  2
3  3  3
4  4  4

预期输出:

   A  B
0  1  1
1  2  2
3  3  3
4  4  4

标签: pythonpandas

解决方案


.drop_duplicates()方法查看数据框所有列的重复行,因此您需要使用.drop_duplicates()while 对两列中的每一列进行子集化,然后获取这两个子集数据框的交集(内部合并)。与其打印结果数据框,不如让您的函数返回数据框更符合您的兴趣。

import pandas as pd

def start():
    df_dict = {"A": [1,2,3,3,4], "B": [1,2,2,3,4]}
    df = pd.DataFrame(df_dict)

    # drop duplicates within each column
    df1 = df.drop_duplicates(subset='A', keep='last')
    df2 = df.drop_duplicates(subset='B', keep='last')

    return pd.merge(df1,df2,how='inner')

if __name__ == "__main__":
    result = start() 

输出:

>>> result
   A  B
0  1  1
1  3  3
2  4  4

推荐阅读