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

如何将Pandas DataFrame列中的Python列表转换为CSV格式列表?

解决Pandas DataFrame中列表转CSV格式字符串的问题

问题场景

现有一个Pandas DataFrame,City列存储Python Unicode列表或None,示例数据如下:

StateCity
Oregon[u'Eugen', u'Portland']
New York[u'New Jersey', u'Buffalo']
Utah[u'Salt Lake CIty']
TexasNone

需要将City列转换为带单引号的CSV格式字符串,处理后结果如下:

StateCities
Oregon'Eugen', 'Portland'
New York'New Jersey', 'Buffalo'
Utah'Salt Lake CIty'
Texas

需兼容None值、单元素列表等边界情况,数据量超1700条,需高效实现。

原代码问题分析

你之前尝试的代码:

df['Cities'] = ','.join(str(row) for row in df['cities'])

错误原因是:该代码是将整个City列的每一行(每个列表对象)转成字符串后拼接,而非对每个列表内部的元素进行格式化,因此会得到所有列表字符串的拼接结果,而非目标格式。

解决方案

使用pandas.Series.apply()方法,配合自定义函数逐个处理每行的City值:

import pandas as pd

# 示例数据
data = {
    'State': ['Oregon', 'New York', 'Utah', 'Texas'],
    'City': [[u'Eugen', u'Portland'], [u'New Jersey', u'Buffalo'], [u'Salt Lake CIty'], None]
}
df = pd.DataFrame(data)

# 定义格式化函数
def format_cities(city_list):
    if city_list is None:
        return ''  # 若需要保留None可改为return None
    # 给每个城市名加单引号,再用逗号加空格连接
    return ', '.join(f"'{city}'" for city in city_list)

# 应用到City列,生成新的Cities列
df['Cities'] = df['City'].apply(format_cities)

# 查看结果
print(df[['State', 'Cities']])

效果说明

  • 当City为None时,返回空字符串(可根据需求修改为None)
  • 单元素列表会直接输出带单引号的单个城市名
  • 多元素列表会输出用, 分隔、每个元素带单引号的格式
  • apply()方法逐行处理,1700条数据的规模完全适用

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:33:20