python - 如何使用两个数据框计算丢失的数据?
问题描述
我有这两个数据框:
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
) 中缺少多少行?例如:A
df1
df2
df1
失踪d3
和d4
为22
df1
也失踪d2
了d4
43
是否可以将这些行添加到df1
?
解决方案
您可以尝试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)
推荐阅读
- javascript - Javascript Android chrome 监听以选择更改事件
- android - 在图像周围绘制坐标并计算顶点位置 Android
- visual-studio - 抑制单个编译器错误(例如 NU1603)
- php - 使用 PHP 项目关键字解析 XML
- c# - ModelBinder 的文化默认行为问题
- format - matlab coder - 在创建的 C 代码中更改格式
- python - Python 正则表达式中的 Re.search 无法按预期工作
- r - 用户定义的函数在 R 中没有响应
- apache - Apache 使用的 LDAP 过滤器始终不返回任何条目
- c# - char 数组返回值,如 50'w'