我有两个Pandas DataFrame:
第一个包含日期之间人员的模式值:
access_pattern = pd.DataFrame(
{
"person": ['John', 'John', 'Peter', 'Charly'],
"from_date": [20180101, 20180101, 20180201, 20180201],
"to_date": [20180108, 20180331, 20180228, 20180228],
"pattern": [10, 1, 11, 0]
}
)
access_pattern["from_date"] = pd.to_datetime(access_pattern["from_date"], unit='m')
access_pattern["to_date"] = pd.to_datetime(access_pattern["to_date"], unit='m')
第二个包含每个人的实际访问权限:
access = pd.DataFrame(
{
"person": ['John', 'John', 'Peter', 'Charly'],
"access_date": [20180107, 20180327, 20180226, 20180223]
}
)
access["access_date"] = pd.to_datetime(access["access_date"], unit='m')
我想合并这两个数据框以获得:
对于访问数据帧中的每次访问,我都希望获得与access_pattern中的人和日期匹配的所有模式的按位或结果。对于访问日期,如果它在访问模式数据框的起始日期和结束日期之间,则匹配。
预期输出:
John 20180107 11 # bitwise_or(10, 1)
John 20180327 1
Peter 20180226 11
Charly 20180223 0