You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何直接创建string类型列而非object类型列(无需转换)

问题

是否可以基于单个字符串值直接创建默认即为string类型而非object类型的列?object类型列内存占用过高,且不想花费时间将其转换为string类型。

尝试1:直接赋值单个字符串

df = pd.DataFrame(dict(a=range(10)))
df["new"] = "my string"
df.info()

输出:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 2 columns):

Column Non-Null Count Dtype

0 a 10 non-null int64
1 new 10 non-null object
dtypes: int64(1), object(1)
memory usage: 288.0+ bytes

尝试2:先初始化空string列再赋值

初始化代码:

df = pd.DataFrame(dict(a=range(10)))
df["new"] = pd.Series(dtype="string")
df.info()

初始状态输出:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 2 columns):

Column Non-Null Count Dtype

0 a 10 non-null int64
1 new 0 non-null string
dtypes: int64(1), string(1)
memory usage: 288.0 bytes

赋值代码:

df["new"] = "my string"
df.info()

赋值后输出:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 2 columns):

Column Non-Null Count Dtype

0 a 10 non-null int64
1 new 10 non-null object
dtypes: int64(1), object(1)
memory usage: 288.0+ bytes

现有可行但代码量较大的方法

df = pd.DataFrame(dict(a=range(10)))
df["new"] = pd.Series(["my string"] * len(df), dtype="string", index=df.index)
df.info()

输出:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 2 columns):

Column Non-Null Count Dtype

0 a 10 non-null int64
1 new 10 non-null string
dtypes: int64(1), string(1)
memory usage: 288.0 bytes

更简洁的实现方法

方法1:直接构造匹配索引的string类型Series

无需手动生成重复列表,通过指定index让Series自动匹配DataFrame行数:

df = pd.DataFrame(dict(a=range(10)))
df["new"] = pd.Series("my string", index=df.index, dtype="string")
df.info()

执行后new列会直接是string类型,代码更简洁。

方法2:赋值后快速转换类型

如果接受一行转换代码,这种方式直观且开销极低(单一值列的转换几乎无耗时):

df = pd.DataFrame(dict(a=range(10)))
df["new"] = "my string"
df["new"] = df["new"].astype("string")
df.info()

内容的提问来源于stack exchange,提问作者KG in Chicago

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 19:53:13