擅长:python、mysql、java
<p>最简单和最快的方法是使用Pandas<a href="http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.Series.str.get.html" rel="nofollow noreferrer">str.get()</a>函数并为所需的结果创建另一列。</p>
<p><strong>解决方案#1</strong>
如果<code>B</code>中的值是整数<code>[1234,3456,[1357, 2468],8901]</code>,则第一个解决方案有效</p>
<pre><code>df['C'] = df['B'].str.get(0).astype(float)
df.C.fillna(df['B'], inplace=True)
df['C'] = df.C.astype(int, inplace=True)
</code></pre>
<p>输出:</p>
<pre><code>A B C
0 aa 1234 1234
1 ab 3456 3456
2 bc [1357, 2468] 1357
3 cc 8901 8901
</code></pre>
<p>然后,如果不需要,可以删除列B。</p>
<p><strong>解决方案#2</strong>
如果<code>B</code>中的值是字符串<code>['1234','3456',['1357', '2468'],'8901']</code>,则此解决方案有效</p>
<pre><code>import re
df['digits'] = df['B'].apply(lambda x: re.findall('\d+', str(x)))
df['digits'] = df['digits'].str.get(0)
print(df)
</code></pre>
<p>输出:</p>
<pre><code> A B digits
0 aa 1234 1234
1 ab 3456 3456
2 bc [1357, 2468] 1357
3 cc 8901 8901
</code></pre>
<p>同样,如果不需要,可以删除列B。</p>