擅长:python、mysql、java
<p>小小的澄清以防万一:当Andy的第一个示例(<code>df.div(df2)</code>)在第一行工作时,为什么到处都是NaN,原因是div尝试匹配索引(和列)。在Andy的示例中,索引0在两个数据帧中都存在,因此进行了划分,而不是索引1,因此添加了一行NaN。如果运行以下命令(仅划分“t”行),则此行为将更明显:</p>
<pre><code>df_a = pd.DataFrame(np.random.rand(3,5), index= ['x', 'y', 't'])
df_b = pd.DataFrame(np.random.rand(2,5), index= ['z','t'])
df_a.div(df_b)
</code></pre>
<p>所以在您的例子中,df2的唯一一行的索引显然不在df1中。”幸运的是,这两个数据帧中的列标题都是相同的,所以当您对第一行进行切片时,您将得到一个序列,其索引由df2的列标题组成。这是最终使分裂得以正常进行的原因。</p>
<p>对于索引和列匹配的情况:</p>
<pre><code>df_a = pd.DataFrame(np.random.rand(3,5), index= ['x', 'y', 't'], columns = range(5))
df_b = pd.DataFrame(np.random.rand(2,5), index= ['z','t'], columns = [1,2,3,4,5])
df_a.div(df_b)
</code></pre>