擅长:python、mysql、java
<p>如果你使用熊猫,如果你想走那条路,这是很容易的</p>
<p>我能够将您的数据读入<code>pandas DataFrame</code>,然后删除了其他列:</p>
<pre><code> Start End Strand OperonID
0 2052 3260 + 1132034
1 3280 4437 + 1132034
2 4434 4997 + 1132034
3 5123 7267 + 1132035
4 7302 9818 + 1132035
5 11421 11528 - 1132036
6 11555 11692 - 1132036
7 14089 14877 + 1132037
</code></pre>
<p>然后我按<code>OperonID</code>分组,并将<code>Start</code>和<code>End</code>和<code>Strand</code>值存储为列表,并创建一个新列,其中第一个<code>Start</code>和最后一个<code>End</code>per <code>OperonID</code>值以及唯一的<code>Strand</code>值。您可以根据需要重新组织它</p>
<pre><code>df2 = df.groupby('OperonID')[['Start', 'End', 'Strand']].agg(list)
df2['result'] = df2.apply(lambda x: (x['Start'][0], x['End'][-1], set(x['Strand'])), axis=1)
df2['result']:
OperonID
1132034 (2052, 4997, {+})
1132035 (5123, 9818, {+})
1132036 (11421, 11692, {-})
1132037 (14089, 14877, {+})
</code></pre>