如何从Pandas Series生成带双引号的列表?格式问题求助
解决方法
首先纠正你代码里的问题:你先对df["NAME"]做了str.split(","),这时候该列的元素已经是Python列表了,再循环调用.split(",")会报错(因为列表没有split方法),而且你要的带引号的列表其实是字符串形式的列表(Pandas里原生列表显示时不带引号,但如果要输出成带引号的格式,需要把列表转成字符串)。
正确步骤:
- 先把原始字符串分割成干净的列表(去掉元素前后的空格)
- 将每个列表转成带双引号的字符串格式
完整代码:
# 第一步:分割字符串并去除每个元素的空格 df["NAME"] = df["NAME"].str.split(",").apply(lambda lst: [s.strip() for s in lst]) # 第二步:把列表转成带双引号的字符串形式 df["NAME"] = df["NAME"].apply(lambda lst: f'["{"", ".join(lst)}"]')
效果验证:
运行后你的DataFrame会输出:
0. ["Mike", "Jean"] 1. ["May", "Weather"] 2. ["Jack", "100"]
补充说明:
- 如果你的分割符是
,(逗号加空格),可以直接用str.split(", ")代替第一步的split加strip,更高效:df["NAME"] = df["NAME"].str.split(", ").apply(lambda lst: f'["{"", ".join(lst)}"]') - 作为Pandas新手要注意:尽量避免用循环遍历Series,用
apply或者矢量化操作更符合Pandas的设计逻辑,效率也更高。
内容的提问来源于stack exchange,提问作者Roshan
相关产品推荐
相关产品推荐

