如何将Pandas DataFrame中Object类型列转为字符串数组?
将Pandas中object类型的数组列转为字符串数组类型
情况1:列中元素是字符串形式的数组文本
如果你的names列存储的是类似 "[\"one\", \"two\", \"three\"]" 的字符串(而非真正的Python列表),需要先解析字符串为列表,再转为规范的字符串数组:
- 用
ast.literal_eval解析字符串为Python列表:
import ast import pandas as pd # 把字符串格式的数组解析为Python列表 df['names'] = df['names'].apply(ast.literal_eval)
- 转为Pandas标准的字符串数组类型:
如果需要将每个列表转为Pandas的StringArray(内部统一存储为字符串类型),可以执行:
df['names'] = df['names'].apply(lambda x: pd.array(x, dtype="string"))
情况2:列中元素已是Python列表,但dtype为object
如果names列已经是Python字符串列表,但Pandas显示dtype为object,可以通过以下方式优化类型:
- 直接将每个列表转为Pandas的
StringArray:
import pandas as pd df['names'] = df['names'].apply(lambda lst: pd.array(lst, dtype="string"))
- 若需确保列表内所有元素都是字符串类型(避免混合类型问题),可以用:
df['names'] = df['names'].apply(lambda lst: [str(item) for item in lst])
验证转换结果
转换后可通过以下命令确认类型:
# 查看列的整体数据类型 print(df['names'].dtype) # 查看单个元素的具体类型 print(type(df['names'].iloc[0]))
内容的提问来源于stack exchange,提问作者ddd
相关产品推荐
相关产品推荐

