擅长:python、mysql、java
<p>更简单一点,使用条件切片可以编写</p>
<pre class="lang-py prettyprint-override"><code>data = DF['z_eu'][(DF['Process'] == 'initStep') & (DF['Creator'] == 'SynRad')]
</code></pre>
<p>…或者仍然使用<code>zip</code>,您可以简化为</p>
<pre class="lang-py prettyprint-override"><code>data = [z for z, p, c in zip(*DF.values()) if p == 'initStep' and c == 'SynRad']
</code></pre>
<p>基本上也是条件切片,使用<code>pandas</code><code>DataFrame</code>:</p>
<pre class="lang-py prettyprint-override"><code>df = pd.DataFrame(DF)
data = df.loc[(df['Process'] == 'initStep') & (df['Creator'] == 'SynRad'), 'z_eu']
print(data)
# 0 127.450648
# Name: z_eu, dtype: float64
</code></pre>
<p>原则上,我认为在<code>dict</code>中处理<code>numpy</code>数组没有什么问题。如果直接在<code>numpy</code>中进行运算,您会有很大的灵活性,有时运算效率会更高(您甚至可以利用<code>numba</code>进行纯数值的、昂贵的计算)-但是如果不需要这样做,并且您基本上可以使用n*m表,<code>pandas</code>dfs非常好而且方便。你知道吗</p>
<p>如果您的数据集很大,并且希望执行如图所示的许多查找,则可能不希望对字符串执行这些查找。为了提高性能,您可以为示例中的每个“进程”或“创建者”提供唯一的ID(整数)。您只需要能够将它们映射回原始字符串,所以也要保留这些数据。你知道吗</p>