<p><strong>与熊猫一起>;=1.0现在有一个专用的字符串数据类型:</strong></p>
<p><strong>1)</strong>您可以使用<a href="https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html" rel="noreferrer">.astype('string')</a>将列转换为该<strong>字符串数据类型</strong>:</p>
<pre><code>df['zipcode'] = df['zipcode'].astype('string')
</code></pre>
<p><strong>2)</strong>这与使用<code>str</code>设置对象数据类型不同</strong>:</p>
<pre><code>df['zipcode'] = df['zipcode'].astype(str)
</code></pre>
<p><strong>3)</strong>要更改为<strong>分类数据类型</strong>请使用:</p>
<pre><code>df['zipcode'] = df['zipcode'].astype('category')
</code></pre>
<p>当您查看数据帧的信息时,可以看到数据类型的这种差异:</p>
<pre><code>df = pd.DataFrame({
'zipcode_str': [90210, 90211] ,
'zipcode_string': [90210, 90211],
'zipcode_category': [90210, 90211],
})
df['zipcode_str'] = df['zipcode_str'].astype(str)
df['zipcode_string'] = df['zipcode_str'].astype('string')
df['zipcode_category'] = df['zipcode_category'].astype('category')
df.info()
# you can see that the first column has dtype object
# while the second column has the new dtype string
# the third column has dtype category
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 zipcode_str 2 non-null object
1 zipcode_string 2 non-null string
2 zipcode_category 2 non-null category
dtypes: category(1), object(1), string(1)
</code></pre>
<br/>
从文档中:
<blockquote>
<p>The 'string' extension type solves several issues with object-dtype
NumPy arrays:</p>
<ol>
<li><p>You can accidentally store a mixture of strings and non-strings in an
object dtype array. A StringArray can only store strings.</p>
</li>
<li><p>object dtype breaks dtype-specific operations like
DataFrame.select_dtypes(). There isn’t a clear way to select just text
while excluding non-text, but still object-dtype columns.</p>
</li>
<li><p>When reading code, the contents of an object dtype array is less clear
than string.
<br/></p>
</li>
</ol>
</blockquote>
<p>有关使用新字符串数据类型的更多信息,请参见:
<a href="https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html" rel="noreferrer">https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html</a></p>