首页 > 解决方案 > 如何使用两个数据框计算丢失的数据?

问题描述

我有这两个数据框:

df1 = pd.DataFrame({'a':['11','11','11','11','22','22','43','43'], 'x': ['d1', 'd2','d3','d4','d1','d2','d1','d3'], 'b': [1, 2,3,4,5,6,7,8]})

df2 = pd.DataFrame({'x': ['d1', 'd2','d3','d4']})

df1是我需要添加数据的原始数据框

df2是我比较列的数据框

df1

    a   x  b
0  11  d1  1
1  11  d2  2
2  11  d3  3
3  11  d4  4
4  22  d1  5
5  22  d2  6
6  43  d1  7
7  43  d3  8

df2

    x
0  d1
1  d2
2  d3
3  d4

当我与来自的数据进行比较时,如何计算关于列( ) 的列X( df1) 中缺少多少行?例如:Adf1df2

df1失踪d3d422

df1也失踪d2d443

是否可以将这些行添加到df1

标签: pythonpandasdataframe

解决方案


您可以尝试for循环:

x_set = set(df2['x'])

{k:x_set.difference(set(d)) for k,d in df1.groupby('a')['x']}

输出:

{'11': set(), '22': {'d3', 'd4'}, '43': {'d2', 'd4'}}

如果你想要长度:

lengths = {k:len(x_set.difference(set(d))) k,d in df1.groupby('a')['x']}

并将其映射回来:

df1['len'] = df['a'].map(lengths)

推荐阅读