<p>要选择数据帧的行,可以使用iloc,然后可以使用方括号选择所需的列</p>
<p>例如:</p>
<pre><code> df = pd.DataFrame(data=[[1,2,3]]*5, index=range(3, 8), columns = ['a','b','c'])
</code></pre>
<p>提供以下数据帧:</p>
<pre><code> a b c
3 1 2 3
4 1 2 3
5 1 2 3
6 1 2 3
7 1 2 3
</code></pre>
<p>要仅选择三维和第五行,可以执行以下操作:</p>
<pre><code>df.iloc[[2,4]]
</code></pre>
<p>返回:</p>
<pre><code> a b c
5 1 2 3
7 1 2 3
</code></pre>
<p>如果您想仅选择列b和c,则使用以下命令:</p>
<pre><code>df[['b', 'c']].iloc[[2,4]]
</code></pre>
<p>这将产生:</p>
<pre><code> b c
5 2 3
7 2 3
</code></pre>
<p>然后,要获得数据帧子集的平均值,可以使用df.mean函数。如果需要列的平均值,可以指定axis=0;如果需要行的平均值,可以指定axis=1</p>
<p>因此:</p>
<pre><code>df[['b', 'c']].iloc[[2,4]].mean(axis=0)
</code></pre>
<p>返回:</p>
<pre><code>b 2
c 3
</code></pre>
<p>正如我们从输入数据帧中所期望的那样</p>
<p>对于您的代码,您可以执行以下操作:</p>
<pre><code> df[column_list].iloc[row_index_list].mean(axis=0)
</code></pre>
<p>评论后编辑:
评论中的新问题:
我必须将这些方法存储在另一个df/矩阵中。我有L1,L2,L3,L4…LX列表,它告诉我C[1,2,3]列需要的索引的平均值。对于ex:L1=[0,2,3],意味着我需要行0,2,3的平均值,并将其存储在新df/矩阵的第一行中。然后L2=[1,4],我将再次计算平均值,并将其存储在新df/矩阵的第二行。类似地,直到LX,我希望新的df有X行和len(C)列。L1..LX的列将保持不变。你能帮我做这个吗</p>
<p>答复:</p>
<p>如果我理解正确的话,下面的代码应该可以做到这一点(与上面的df相同,作为我使用的'a'和'b'列):</p>
<p>首先在所有行列表上循环,将所有平均值收集为pd.series,然后在axis=1上连接生成的系列列表,然后进行转置以获得正确的格式</p>
<pre><code>dfs = list()
for l in L:
dfs.append(df[['a', 'b']].iloc[l].mean(axis=0))
mean_matrix = pd.concat(dfs, axis=1).T
</code></pre>