擅长:python、mysql、java
<p>使用<code>Series.value_counts()</code>:</p>
<pre><code>>>> s = pd.Series(['ATCG', 'TGCA', 'AAGC', 'GCAT'])
>>> s.str.join('|').str.split('|', expand=True)\
... .apply(lambda row: row.value_counts(), axis=0)\
... .fillna(0.)\
... .astype(int)
0 1 2 3
A 2 1 1 1
C 0 1 2 1
G 1 1 1 1
T 1 1 0 1
</code></pre>
<p>我不确定您希望对索引排序的逻辑性,但是您可以对这个结果调用<code>.reindex()</code>或<code>.sort_index()</code>。你知道吗</p>
<p>第一行<code>s.str.join('|').str.split('|', expand=True)</code>为您提供一个“扩展”版本</p>
<pre><code> 0 1 2 3
0 A T C G
1 T G C A
2 A A G C
3 G C A T
</code></pre>
<p>这应该比在每一行上调用<code>pd.Series(list(x)) ...</code>更快。你知道吗</p>