<p>您可以使用正则表达式模式<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.extract.html">extract</a>非常整齐地将不同部分输出:</p>
<pre><code>In [11]: df.row.str.extract('(?P<fips>\d{5})((?P<state>[A-Z ]*$)|(?P<county>.*?), (?P<state_code>[A-Z]{2}$))')
Out[11]:
fips 1 state county state_code
0 00000 UNITED STATES UNITED STATES NaN NaN
1 01000 ALABAMA ALABAMA NaN NaN
2 01001 Autauga County, AL NaN Autauga County AL
3 01003 Baldwin County, AL NaN Baldwin County AL
4 01005 Barbour County, AL NaN Barbour County AL
[5 rows x 5 columns]
</code></pre>
<hr/>
<p>要解释有点长的正则表达式:</p>
<pre><code>(?P<fips>\d{5})
</code></pre>
<ul>
<li>匹配五个数字(<code>\d</code>),并将它们命名为<code>"fips"</code></李>
</ul>
<p>下一部分:</p>
<pre><code>((?P<state>[A-Z ]*$)|(?P<county>.*?), (?P<state_code>[A-Z]{2}$))
</code></pre>
<p>做两件事之一(<code>|</code>):</p>
<pre><code>(?P<state>[A-Z ]*$)
</code></pre>
<ul>
<li>匹配任何数目(<code>*</code>)的大写字母或空格(<code>[A-Z ]</code>),并在字符串(<code>$</code>)结尾之前将此<code>"state"</code>命名</li>
</ul>
<p>或</p>
<pre><code>(?P<county>.*?), (?P<state_code>[A-Z]{2}$))
</code></pre>
<ul>
<li>匹配任何其他内容(<code>.*</code>),然后</li>
<li>一个逗号和一个空格</li>
<li>匹配字符串(<code>$</code>)结尾前的两位<code>state_code</code></李>
</ul>
<p><em>在示例中:</em><br/>
<em>请注意,前两行显示的是“州”(在“县”和“州代码”列中保留NaN),而后三行显示的是“县”和“州代码”(在“州”列中保留NaN)</em></p>