【发布时间】:2018-09-09 15:08:46
【问题描述】:
我有以下示例数据框:
df_1:
from datetime import datetime
import pandas as pd
>>> df_1 = pd.DataFrame(
{"SVDiscrep_Merge": ["2081916SAN", "2081242DFW", "2081248ORD","20874CLE", "2081740DEN"],
"RON_DATE": [datetime(2017,6,1), datetime(2017,6,4), datetime(2017,6,6), datetime(2017,6,7), datetime(2017,6,8)],
"Next SV1 Date": [datetime(2017,6,4), datetime(2017,6,6), datetime(2017,6,7), datetime(2017,6,8), datetime(2017, 6, 18)]})
>>> df_1
SVDiscrep_Merge RON_DATE Next SV1 Date
2081916SAN 6/1/2017 6/4/2017
2081242DFW 6/4/2017 6/6/2017
2081248ORD 6/6/2017 6/7/2017
20874CLE 6/7/2017 6/8/2017
2081740DEN 6/8/2017 6/18/2017
df_2:
>>> df_2 = pd.DataFrame(
{"SVDiscrep_Merge": ["2081916SAN", "2081916SAN", "2081916SAN","2081740DEN"],
"REPORT_DT": [datetime(2017,6,1), datetime(2017,6,3), datetime(2017,6,4), datetime(2017,6,9)],
"ColA": ["A", "B", "C", "D"]})
>>> df_2
SVDiscrep_Merge REPORT_DT ColA
2081916SAN 6/1/2017 A
2081916SAN 6/3/2017 B
2081916SAN 6/4/2017 C
2081740DEN 6/9/2017 D
我想采用以下逻辑:
当(且仅当)
SVDiscrep_Merge在两个数据帧中相等时,左合并df_2到df_1和REPORT_DT列是 >=RON_DATE中的日期和 df_1 中Next SV1 Date中的日期。
这是我想要的输出:
SVDiscrep_Merge RON_DATE Next SV1 Date ColA
2081916SAN 6/1/2017 6/4/2017 A
2081916SAN 6/4/2017 6/6/2017 B
2081916SAN 6/6/2017 6/7/2017
2081242DFW 6/4/2017 6/6/2017
2081248ORD 6/6/2017 6/7/2017
20874CLE 6/7/2017 6/8/2017
2081740DEN 6/8/2017 6/18/2017 D
如果我没有那个日期逻辑,我知道如何在 python 代码中进行合并......但是有了那个日期逻辑(在搜索 Google 之后)我不知所措。
【问题讨论】:
-
B是如何与2081242DFW排成一行的? -
你的数据集是不是太大了,或者我们在谈论一些你不需要超级担心空间的东西?
-
您确定您的
df_2正确吗? -
道歉......你们是对的,我犯了一个错误
标签: python pandas date merge between