如何创建字符串类型的 Pandas 系列?

Posted

技术标签:

【中文标题】如何创建字符串类型的 Pandas 系列?【英文标题】:How to create Pandas Series of type string? 【发布时间】:2019-04-22 21:42:10 【问题描述】:

我正在将数据从 Python 导出到 SQL 数据库,出于性能原因,我正在尝试确保我正在导出的数据已注册为具有正确的类型。因此,我正在尝试创建我的数据的 Pandas 系列,具有正确的数据类型。我假设在 pd.Series 对象上调用 dtype 会产生其底层元素的数据。我无法让它适用于字符串数据。

这是一个演示问题的代码示例:

orig_data_string = ['abc'] * 10
pd_data_string = pd.Series(orig_data_string)
pd_data_string.dtype

在 Python 控制台中运行上述代码会产生 dtype('O'),我用它来指示对象类型。我想要的是它改为字符串。现在,我可以用数值做类似的事情:

orig_data_float = [1.23] * 10
pd_data_float = pd.Series(orig_data_float)
pd_data_float.dtype

在这种情况下,我得到了结果dtype('float64'),因此在这种情况下,Pandas 已经从列表输入中正确推断出数据类型。如果我尝试pd.Series(orig_data_string).astype(str),我会得到相同的结果。如何从字符串列表中创建基础数据类型为 str 的 Pandas Series 对象?

【问题讨论】:

字符串在系列中表示为O。所以如果你得到dtype('O'),这意味着它是一个字符串。 你确定吗?这个问题的评分最高的答案:***.com/questions/37561991/what-is-dtypeo 似乎表明dtype('S') 将表示一个字符串? @AlexanderSokol - 这是dtypestypes 之间的区别,请查看链接答案以了解区别link 【参考方案1】:

Pandas object O dtype 被视为 str 本身。 请参考以下示例。

>>> df = pd.DataFrame('float': [1.0],
...                    'int': [1],
...                    'datetime': [pd.Timestamp('20180310')],
...                    'string': ['foo'])
>>> df.dtypes
float              float64
int                  int64
datetime    datetime64[ns]
string              object
dtype: object

参考:https://pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.DataFrame.dtypes.html

【讨论】:

以上是关于如何创建字符串类型的 Pandas 系列?的主要内容,如果未能解决你的问题,请参考以下文章

Pandas系列-Series详解

在 Pandas 系列中选择字符串的一部分

Pandas系列:10种方式创建DataFrame

python pandas中如何将dataframe中的一列字符串类型转换为浮点类型?

如何将 pandas 数据框的数据类型更改为具有定义格式的字符串?

熊猫:将系列的数据类型更改为字符串