<p>尝试:</p>
<pre><code>breakdown["Month"] = pd.to_datetime(breakdown["Month"])
revenue["Date"] = pd.to_datetime(revenue["Date"])
x = pd.merge(
breakdown.assign(
y=breakdown["Month"].dt.year, m=breakdown["Month"].dt.month
),
revenue.assign(y=revenue["Date"].dt.year, m=revenue["Date"].dt.month),
on=["y", "m", "Vendor"],
how="outer",
)
x["Revenue"] *= x["Percentage"].fillna(1)
print(x[["Date", "Vendor", "Snack", "Revenue"]].fillna(""))
</code></pre>
<p>印刷品:</p>
<pre class="lang-none prettyprint-override"><code> Date Vendor Snack Revenue
0 2021-01-01 Mickey Mouse Churros 50.0
1 2021-01-15 Mickey Mouse Churros 75.0
2 2021-01-01 Mickey Mouse Funnel Cake 25.0
3 2021-01-15 Mickey Mouse Funnel Cake 37.5
4 2021-01-01 Mickey Mouse Apples 25.0
5 2021-01-15 Mickey Mouse Apples 37.5
6 2021-01-01 Goofy Churros 34.0
7 2021-01-01 Goofy Funnel Cake 33.0
8 2021-01-01 Goofy Water 33.0
9 2021-01-01 Donald Duck 100.0
10 2021-02-01 Mickey Mouse 200.0
11 2021-02-01 Donald Duck 200.0
12 2021-02-01 Goofy 200.0
</code></pre>