<pre><code>for month in range(1,13):
tempOpenDF = tempYearDF.loc[tempYearDF['month'] == month, 'open']
</code></pre>
<p><code>loc</code>=位置或“命名”项目</p>
<p>您可能需要<code>iloc</code>,但是<code>tempYearDF['month']</code>不是一整列吗?<br/>
您可能希望引用<code>tempYearDF['month'].value</code>或<code>tempYearDF['month'].the_name_of_this_column</code>(或任何适当的方法/属性)</p>
<hr/>
<p><code>df[df["month"] ==1]</code>是一个包含21行和所有列的切片
<code>df.loc[df["month"] ==1]</code>也是一个包含21行和所有列的切片
当month等于<strong>1</strong>时,<code>df.loc[df["month"] ==1, "open"</code>只返回<code>open</code>列中的21行</p>
<p>你也在哪里保存这个<code>tempOpenDF</code>在<code>for</code>循环中<strong>。它的值只会随着循环的每个索引而变化</p>
<p>我必须看到更多的信息传递到哪里。就目前情况而言,您可以正确地进行过滤,但不会将过滤后的数据发送到任何地方</p>
<p>你所拥有的在其他方面是有用的</p>
<pre><code>import pandas as pd
df = pd.read_csv("sample_data.csv",sep='\t',parse_dates=["date"])
# sample data is what you provided above, using tab separation
#
some_year = 2020
print(df.loc[df["month"] == 1, 'open'],'\n')
print(df.loc[df["year"] == 2020, 'open'],'\n')
# print(df.loc[(df["month"] == 1 and df["year"] == 2020), 'open'])
for i in range(1,13):
dfy = df.loc[df["year"] == 2020]
mondata = dfy.loc[dfy["month"] == i, "open"]
print("Month: ",i,'\n',mondata,"\n")
</code></pre>
<p><code>>>> df.head()</code><br/>
<code>some_index open year month day date</code><br/>
<code>0 2516 296.239990 2020 1 2 2020-01-02</code><br/>
<code>1 2517 297.149994 2020 1 3 2020-01-03</code><br/>
<code>2 2518 293.790009 2020 1 6 2020-01-06</code><br/>
<code>3 2519 299.839996 2020 1 7 2020-01-07</code><br/>
<code>4 2520 297.160004 2020 1 8 2020-01-08</code><br/>
真正的索引是0,1,等等。<code>some_index</code>来自您的数据</p>