合并Pandas Dataframe并按位或许多值分组

时间:2018-08-08 17:29:38

标签: python-3.x pandas merge group-by

我有两个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

0 个答案:

没有答案