<p>假设您的数据帧更大,并且实际上有一个适当的索引。要在示例中模拟此情况,请执行以下操作:</p>
<pre class="lang-py prettyprint-override"><code>df = df.reset_index()
</code></pre>
<p>构建两个词典,一个带起始索引,一个带结束索引:</p>
<pre class="lang-py prettyprint-override"><code>beginnings = df.loc[df['0'] == 'BEGIN_GROUP']['1'].to_dict()
endings = df.loc[df['0'] == 'END_GROUP']['1'].to_dict()
beginnings, endings
</code></pre>
<pre class="lang-py prettyprint-override"><code>({17: 'R', 34: 'G'}, {33: 'R'})
</code></pre>
<p>现在,基于这些保存的索引构建新的数据帧:</p>
<pre class="lang-py prettyprint-override"><code>dfs = {}
for begin_idx, begin_label in beginnings.items():
for end_idx, end_label in endings.items():
if begin_label == end_label:
dfs[begin_label] = df.iloc[begin_idx:end_idx+1]
</code></pre>
<p>注意:这将构建一个包含数据帧的字典。您可以通过其唯一的标签来称呼它们:</p>
<pre class="lang-py prettyprint-override"><code>dfs['R']
</code></pre>
<pre><code> index 0 1
2 17 BEGIN_GROUP R
3 18 ULLon xx
4 19 ULLat xx
5 20 ULHAE xx
6 21 URLon xx
7 22 URLat xx
8 23 URHAE xx
9 24 LRLon xx
10 25 LRLat xx
11 26 LRHAE xx
12 27 LLLon xx
13 28 LLLat xx
14 29 LLHAE xx
15 30 absCalFactor xx
16 31 effectiveBandwidth xx
17 32 TDILevel xx
18 33 END_GROUP R
</code></pre>