<p>我正在创建一个数据帧,它基于最终用户在选择列表上所做的选择,将一个非常大的数据帧(大约400列)配对。选择列表选项之一是最终用户想要的分母类型。下面是一个示例表,其中包含最终计算之前的所有信息。在</p>
<pre><code> county _tcount _tvote _f_npb_18_count _f_npb_18_vote
countycode
35 San Benito 28194 22335 2677 1741
36 San Bernardino 912653 661838 108724 61832
countycode _f_npb_30_count _f_npb_30_vote
35 384 288
36 76749 53013
</code></pre>
<p>但是,我很难创建代码来自动将从第5行开始的每一列(不包括索引)除以它前面的列(每隔一列跳过一列)。我见过一些例子(<a href="https://stackoverflow.com/questions/34540567/divide-multiple-columns-by-another-column-in-pandas">Divide multiple columns by another column in pandas</a>),但它们都使用固定的列名,这在这方面是不可能实现的。我可以通过固定列改变列(基于位置),但不能通过其他基于位置的可变列来改变列。我尝试过根据列位置修改上述链接中的代码:</p>
^{pr2}$
<p>输出:</p>
<pre><code>[ county _tcount _tvote _f_npb_18_count _f_npb_18_vote \
countycode
35 NaN NaN NaN NaN NaN
36 NaN NaN NaN NaN NaN]
</code></pre>
<blockquote>
<p>RuntimeWarning: invalid value encountered in greater
(abs_vals > 0)).any()</p>
</blockquote>
<p>当红利是固定的时,<code>[5: :2]</code>的使用是有效的字段。如果我不能让这个工作,这不是什么大不了的(但如果有我想要的所有选项那就太好了)。在</p>
<p>像这样的东西怎么样</p>
<pre><code>cols = my_df.columns
for i in range(2, 6):
print(u'Creating new col %s', cols[i])
my_df['new_{0}'.format(cols[i]) = my_df[cols[i]] / my_df[cols[i-1]
</code></pre>