擅长:python、mysql、java
<p>迭代数组时,数组的元素不是可变的。也就是说,基于您的示例,它正在做什么:</p>
<pre><code># 1st iteration
well = 'N1' # assigned by the for loop directive
...
well = <empty DataFrame> # assigned by `well = pd.DataFrame()`
...
well = <DataFrame, subset of cdf where col has 'N1' in name> # assigned by `well = cdf[well_cols]`
# 2nd iteration
well = 'N2' # assigned by the for loop directive
...
well = <empty DataFrame> # assigned by `well = pd.DataFrame()`
...
well = <DataFrame, subset of cdf where col has 'N2' in name> # assigned by `well = cdf[well_cols]`
...
</code></pre>
<p>但是在任何时候您都没有更改数组,也没有为此存储新的数据帧(尽管在迭代结束时,您仍将最后一个数据帧存储在<code>well</code>中)。在</p>
<p>在我看来,将数据帧存储在dict中更容易使用:</p>
^{pr2}$
<p>但是,如果您真的希望它出现在列表中,您可以执行以下操作:</p>
<pre class="lang-py prettyprint-override"><code>df=pd.read_csv('data.csv')
cdf = df.drop(['DateTime'], axis=1)
wells = ['N1','N2','N3','N4','N5','N6','N7','N8','N9']
for ix, well in enumerate(wells):
well_cols = [col for col in cdf.columns if well in col]
wells[ix] = cdf[well_cols]
</code></pre>