<p><a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.astype.html" rel="noreferrer">astype()</a>将把每个序列强制转换为<a href="http://pandas.pydata.org/pandas-docs/stable/basics.html#astype" rel="noreferrer">dtype</a>对象(字符串),然后对转换后的序列调用<a href="http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.Series.str.html#pandas.Series.str" rel="noreferrer">str()</a>方法以逐字获取字符串并对其调用函数<a href="https://docs.python.org/2/library/stdtypes.html#str.upper" rel="noreferrer">upper()</a>。注意,在此之后,所有列的数据类型都将更改为object。</p>
<pre><code>In [17]: df
Out[17]:
regiment company deaths battles size
0 Nighthawks 1st kkk 5 l
1 Nighthawks 1st 52 42 ll
2 Nighthawks 2nd 25 2 l
3 Nighthawks 2nd 616 2 m
In [18]: df.apply(lambda x: x.astype(str).str.upper())
Out[18]:
regiment company deaths battles size
0 NIGHTHAWKS 1ST KKK 5 L
1 NIGHTHAWKS 1ST 52 42 LL
2 NIGHTHAWKS 2ND 25 2 L
3 NIGHTHAWKS 2ND 616 2 M
</code></pre>
<p>稍后,您可以使用<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_numeric.html#pandas.to_numeric" rel="noreferrer">to_numeric()</a>将“battles”列再次转换为数值:</p>
<pre><code>In [42]: df2 = df.apply(lambda x: x.astype(str).str.upper())
In [43]: df2['battles'] = pd.to_numeric(df2['battles'])
In [44]: df2
Out[44]:
regiment company deaths battles size
0 NIGHTHAWKS 1ST KKK 5 L
1 NIGHTHAWKS 1ST 52 42 LL
2 NIGHTHAWKS 2ND 25 2 L
3 NIGHTHAWKS 2ND 616 2 M
In [45]: df2.dtypes
Out[45]:
regiment object
company object
deaths object
battles int64
size object
dtype: object
</code></pre>