如何合并具有不同时间范围的两个数据集?

how to merge Two datasets with different time ranges?

我有两个如下所示的数据集:

df1:

Date City State Quantity
2019-01 Chicago IL 35
2019-01 Orlando FL 322
... .... ... ...
2021-07 Chicago IL 334
2021-07 Orlando FL 4332

df2:

Date City State Sales
2020-03 Chicago IL 30
2020-03 Orlando FL 319
... ... ... ...
2021-07 Chicago IL 331
2021-07 Orlando FL 4000

我的 date 两个数据集的格式都是 period[M]。我已经尝试使用 df1.join(df2,how='outer')(df2.join(df1,how='outer') 命令,但它们没有正确加起来,基本上,在 2019-01 中,我有 2020-03 的销售额。我怎样才能加入这两个数据集,使我的输出如下:

我无法使用 merge(),因为我必须合并 CityState 以及 Date

Date City State Quantity Sales
2019-01 Chicago IL 35 NaN
2019-01 Orlando FL 322 NaN
... ... ... ... ...
2021-07 Chicago IL 334 331
2021-07 Orlando FL 4332 4000

你可以outer-merge。通过不指定要合并的列,您可以合并两个 DataFrame 中列的交集(在本例中,DateCityState)。

out = df1.merge(df2, how='outer').sort_values(by='Date')

输出:

      Date     City State  Quantity   Sales
0  2019-01  Chicago    IL      35.0     NaN
1  2019-01  Orlando    FL     322.0     NaN
4  2020-03  Chicago    IL       NaN    30.0
5  2020-03  Orlando    FL       NaN   319.0
2  2021-07  Chicago    IL     334.0   331.0
3  2021-07  Orlando    FL    4332.0  4000.0