Pandas 使用Python字典过滤数据库中的唯一匹配项
我有一个类似这样的df:Pandas 使用Python字典过滤数据库中的唯一匹配项,pandas,filtering,Pandas,Filtering,我有一个类似这样的df: df = DataFrame({'CODE': ['AB12', 'AB12', 'CD12', 'CD12', 'CD14', 'CD14'], 'DATE': ['2021-02-01', '2021-03-06', '2021-02-01', '2021-03-06', '2021-02-01', '2021-03-06'], 'VALUE':[0,4,5,5,0,0]}) CODE DATE VALUE AB12 2021-02-01
df = DataFrame({'CODE': ['AB12', 'AB12', 'CD12', 'CD12', 'CD14', 'CD14'], 'DATE': ['2021-02-01', '2021-03-06', '2021-02-01', '2021-03-06', '2021-02-01', '2021-03-06'], 'VALUE':[0,4,5,5,0,0]})
CODE DATE VALUE
AB12 2021-02-01 0
AB12 2021-03-06 4
CD12 2021-02-01 5
CD12 2021-03-06 5
CD14 2021-02-01 0
CD14 2021-03-06 0
我需要能够根据code
和DATE
从原始df中提取非常特定的记录对
因此,我的最终输出应该如下所示:
CODE DATE VALUE
AB12 2021-02-01 0
CD12 2021-03-06 5
CD14 2021-03-06 0
我做了一些研究,并认为我可以通过使用以下词典来实现:
my_filter = {'CODE':['AB12','CD12','CD14'], 'DATE':['2021-02-01','2021-03-06','2021-03-06']}
然后使用以下方法进行过滤:
res = df[df.isin(my_filter).sum(1) == 2]
问题是,当我尝试此操作时,结果似乎只返回code
和DATE
的所有可能组合,可能是因为它正在评估每个实例中是否存在code或DATE中的值
res
CODE DATE VALUE
0 AB12 2021-02-01 0
1 AB12 2021-03-06 4
2 CD12 2021-02-01 5
3 CD12 2021-03-06 5
4 CD14 2021-02-01 0
5 CD14 2021-03-06 0
如何创建字典,使每个代码
仅与相应的日期
配对?
谢谢尝试
合并
:
df.merge(pd.DataFrame(my_filter), on=['CODE','DATE'])
输出:
CODE DATE VALUE
0 AB12 2021-02-01 0
1 CD12 2021-03-06 5
2 CD14 2021-03-06 0