首页 > 解决方案 > 如何使用 pandas 查找丢失和修改的行?

问题描述

我正在尝试使用一些假设的数据框来查找缺失值,df2如下所示merge

dict_a = {'File': ["Orange", "Apple", "Kiwi", "Cherry", "Grapes"], 'Modified':[1, 15, 30, 24, 16]}
dict_b = {'File': ["Apple", "Orange", "Grapes"], 'Modified':[0, 1, 16]}

df1 = pd.DataFrame(dict_a)
df2 = pd.DataFrame(dict_b)

display(df1)
display(df2)

在此处输入图像描述

df3 = pd.merge(df1,df2,how='left',indicator='Exist')
display(df3)

有了这个结果,它告诉我存在具有“left_only”特征的行,即它们可以被修改或丢失。

在此处输入图像描述

将丢失的标记为“丢失”的有效方法是什么?

标签: pythonpandasdataframe

解决方案


获取您的原始代码:

dict_a = {'File': ["Orange", "Apple", "Kiwi", "Cherry", "Grapes"], 'Modified':[1, 15, 30, 24, 16]}
dict_b = {'File': ["Apple", "Orange", "Grapes"], 'Modified':[0, 1, 16]}

df1 = pd.DataFrame(dict_a)
df2 = pd.DataFrame(dict_b)

使用连接加入,然后按“文件”分组,然后进行一些分组、聚合和可选替换,例如:

m = (
    df1.merge(df2, how='outer', indicator='Exist', sort=False)
    .groupby('File', sort=False, as_index=False)
    .agg({'Modified': 'first', 'Exist': 'last'})
    # optionally
    .replace({'Exist': {'both': 'matched', 'right_only': 'modified', 'left_only': 'missing'}})
)

这会给你:

     File  Modified     Exist
0  Orange         1   matched
1   Apple        15  modified
2    Kiwi        30   missing
3  Cherry        24   missing
4  Grapes        16   matched

推荐阅读