<p>试试这个:</p>
<ul>
<li>转换<code>revenue</code>中的日期以反映<code>breakdown</code>中日期的字符串格式</li>
<li>合并revenue和vendor上的框架(外部合并以获得交叉连接效果)</li>
<li>将现有收入乘以百分比计算收入</li>
<li>再选择相关列</li>
</ul>
<pre><code>out = (
revenue
.assign(
Month=pd.to_datetime(revenue["Date"]).dt.strftime("%B %Y")
)
.merge(breakdown, on=["Month", "Vendor"], how="outer")
.assign(Revenue=lambda d: d["Revenue"] * d["Percentage"].fillna(1))
.filter(["Date", "Vendor", "Snack", "Revenue"])
)
print(out)
Date Vendor Snack Revenue
0 2021-01-01 Mickey Mouse Churros 50.0
1 2021-01-01 Mickey Mouse Funnel Cake 25.0
2 2021-01-01 Mickey Mouse Apples 25.0
3 2021-01-15 Mickey Mouse Churros 75.0
4 2021-01-15 Mickey Mouse Funnel Cake 37.5
5 2021-01-15 Mickey Mouse Apples 37.5
6 2021-01-01 Donald Duck NaN 100.0
7 2021-01-01 Goofy Churros 34.0
8 2021-01-01 Goofy Funnel Cake 33.0
9 2021-01-01 Goofy Water 33.0
10 2021-02-01 Mickey Mouse NaN 200.0
11 2021-02-01 Donald Duck NaN 200.0
12 2021-02-01 Goofy NaN 200.0
</code></pre>