merge_asof in pandas 多列
merge_asof in pandas on multiple columns
df1
,date,symbol,eps,epsEstimated,time,revenue,revenueEstimated,year,date_minus_1month,quarter
0,2021-07-30,JCI,0.83,0.83,bmo,6341000000.0,6256450000.0,2021,2021-06-30,Q2
1,2021-04-30,JCI,0.52,0.49,bmo,5594000000.0,5581850000.0,2021,2021-03-30,Q1
2,2021-01-29,JCI,0.43,0.4,bmo,5341000000.0,5268660000.0,2020,2020-12-29,Q4
3,2020-11-03,JCI,0.76,0.73,bmo,5954000000.0,5709315068.0,2020,2020-10-03,Q3
4,2020-07-31,JCI,0.67,0.48,bmo,5343000000.0,3827820895.522387,2020,2020-06-30,Q2
5,2020-05-01,JCI,0.42,0.36,bmo,5444000000.0,4666285714.285715,2020,2020-04-01,Q1
6,2020-01-31,JCI,0.4,0.38,bmo,5576000000.0,5297200000.0,2019,2019-12-31,Q4
7,2019-11-07,JCI,0.78,0.76,bmo,6274000000.0,6113128205.128205,2019,2019-10-07,Q3
8,2019-07-31,JCI,0.65,0.63,bmo,6451000000.0,6252507692.307693,2019,2019-06-30,Q2
9,2019-05-01,JCI,0.32,0.3,bmo,5779000000.0,5417812500.0,2019,2019-04-01,Q1
10,2019-02-01,JCI,0.26,0.24,bmo,5464000000.0,5043692307.692307,2019,2019-01-01,Q4
df2
,date,symbol,acceptedDate
1130,2021-06-30,JCI,2021-07-30
1131,2021-03-31,JCI,2021-04-30
1132,2020-12-31,JCI,2021-01-29
1133,2020-09-30,JCI,2020-11-16
1134,2020-06-30,JCI,2020-07-31
1135,2020-03-31,JCI,2020-05-01
1136,2019-12-31,JCI,2020-01-31
1137,2019-09-30,JCI,2019-11-21
1138,2019-06-30,JCI,2019-08-01
1139,2019-03-31,JCI,2019-05-03
1140,2018-12-31,JCI,2019-02-01
我想通过在符号上合并 df1 和 df2 以及 df1 的日期 = df2 的接受日期来获取 df2 的日期。 df1 中的第 4 行是 2020-11-03,与 df2 的 2020-11-16 不匹配。有没有办法让他们匹配?
我试过了
pd.merge_asof(a, b,
left_on=['symbol', 'date'], right_on=['symbol', 'acceptedDate'],
direction='nearest')
尝试传递给 by
pd.merge_asof(a, b, by = 'symbol',
left_on=['date'], right_on=[ 'acceptedDate'],
direction='nearest')
df1
,date,symbol,eps,epsEstimated,time,revenue,revenueEstimated,year,date_minus_1month,quarter
0,2021-07-30,JCI,0.83,0.83,bmo,6341000000.0,6256450000.0,2021,2021-06-30,Q2
1,2021-04-30,JCI,0.52,0.49,bmo,5594000000.0,5581850000.0,2021,2021-03-30,Q1
2,2021-01-29,JCI,0.43,0.4,bmo,5341000000.0,5268660000.0,2020,2020-12-29,Q4
3,2020-11-03,JCI,0.76,0.73,bmo,5954000000.0,5709315068.0,2020,2020-10-03,Q3
4,2020-07-31,JCI,0.67,0.48,bmo,5343000000.0,3827820895.522387,2020,2020-06-30,Q2
5,2020-05-01,JCI,0.42,0.36,bmo,5444000000.0,4666285714.285715,2020,2020-04-01,Q1
6,2020-01-31,JCI,0.4,0.38,bmo,5576000000.0,5297200000.0,2019,2019-12-31,Q4
7,2019-11-07,JCI,0.78,0.76,bmo,6274000000.0,6113128205.128205,2019,2019-10-07,Q3
8,2019-07-31,JCI,0.65,0.63,bmo,6451000000.0,6252507692.307693,2019,2019-06-30,Q2
9,2019-05-01,JCI,0.32,0.3,bmo,5779000000.0,5417812500.0,2019,2019-04-01,Q1
10,2019-02-01,JCI,0.26,0.24,bmo,5464000000.0,5043692307.692307,2019,2019-01-01,Q4
df2
,date,symbol,acceptedDate
1130,2021-06-30,JCI,2021-07-30
1131,2021-03-31,JCI,2021-04-30
1132,2020-12-31,JCI,2021-01-29
1133,2020-09-30,JCI,2020-11-16
1134,2020-06-30,JCI,2020-07-31
1135,2020-03-31,JCI,2020-05-01
1136,2019-12-31,JCI,2020-01-31
1137,2019-09-30,JCI,2019-11-21
1138,2019-06-30,JCI,2019-08-01
1139,2019-03-31,JCI,2019-05-03
1140,2018-12-31,JCI,2019-02-01
我想通过在符号上合并 df1 和 df2 以及 df1 的日期 = df2 的接受日期来获取 df2 的日期。 df1 中的第 4 行是 2020-11-03,与 df2 的 2020-11-16 不匹配。有没有办法让他们匹配?
我试过了
pd.merge_asof(a, b,
left_on=['symbol', 'date'], right_on=['symbol', 'acceptedDate'],
direction='nearest')
尝试传递给 by
pd.merge_asof(a, b, by = 'symbol',
left_on=['date'], right_on=[ 'acceptedDate'],
direction='nearest')