我的数据框包含day_of_year,year和值
的列 Year Day Value
Object A 2011 2 12
Object B 2011 3 12
Object C 2012 4 3
Object D 2012 5 23
...
我有另一张表,其中包含目标日期列表
Year Day
2011 2
2012 4
... ...
我想用第二个条件过滤第一个数据帧。 (在某一年中,所选日期与其他年份不同。但每年只有一天)
返回的数据集如下所示:
Year Day Value
Object A 2011 2 12
Object C 2012 4 3
...
我尝试过没有运气的各种lambdas,并且相信必须有一种更简单的方法来做到这一点。
答案 0 :(得分:2)
IIUC,您可以使用merge
:
>>> df1
Year Day Value
Object A 2011 2 12
Object B 2011 3 12
Object C 2012 4 3
Object D 2012 5 23
>>> df2
Year Day
0 2011 2
1 2012 4
>>> df1.reset_index().merge(df2).set_index("index")
Year Day Value
index
Object A 2011 2 12
Object C 2012 4 3
我已使用reset/set_index
来保留对象索引。
答案 1 :(得分:0)
您也可以使用' isin':
>>> df1
Year Day Value
Object A 2011 2 12
Object B 2011 3 12
Object C 2012 4 3
Object D 2012 5 23
>>> df2
Year Day
0 2011 2
1 2012 4
>>> df1[ df1.Year.isin( df2.Year ) & df1.Day.isin( df2.Day ) ]
Year Day Value
Object A 2011 2 12
Object C 2012 4 3