<p>下面是另一种使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.reindex.html" rel="nofollow noreferrer">^{<cd1>}</a>和<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html" rel="nofollow noreferrer">^{<cd2>}</a>的方法:</p>
<pre><code>def myf(dataframe,dictionary):
cond1=dataframe.isna()
cond2=np.ushort(dataframe)>10
m=(pd.DataFrame.from_dict(dictionary,orient='index')
.reindex(dataframe.index.get_level_values(1)))
m.index=pd.MultiIndex.from_arrays((dataframe.index.get_level_values(0),m.index))
arr=np.where(cond1|cond2,np.ushort(dataframe),
m[m.columns.intersection(dataframe.columns)])
return pd.DataFrame(arr,dataframe.index,dataframe.columns)
</code></pre>
<hr/>
^{pr2}$
<hr/>
^{3}$
<p>步骤如下:</p>
<blockquote>
<ul>
<li>This function creates a dataframe with the dictionary (<code>m</code>) and reindexes ad the original.</li>
<li>Post this, we are adding an extra level to make it a multiindex same as the original dataframe. (print m inside func to see m)</li>
<li>Then we check condition if dataframe is Null or <code>np.ushort</code> value more than 10</li>
<li>If condition matches, return <code>np.ushort</code> of dataframe else values from matching columns from m.</li>
</ul>
</blockquote>
<p>如果有任何步骤我没有检查,或者您想合并,因为我觉得这是避免行计算的一种方法,请告诉我。在</p>