如何使用Python将字符串列表转换为含指定列的Pandas DataFrame并写入CSV
解决方法:正确拆分含空格字段的列表为三列DataFrame
嘿,我来帮你搞定这个问题!你现在遇到的问题是直接把整个字符串列表传入pd.DataFrame()时,它会默认把每个字符串当作单列的一行,完全没识别出三列的结构。关键难点在于DisplayName字段包含空格,不能简单按所有空格拆分,得用指定拆分次数的方式来处理。
具体步骤与代码实现
- 提取表头:列表第一行就是列标题,直接按空格拆分即可。
- 处理数据行:对每一行数据使用
split(maxsplit=2)方法,最多拆分2次——这样前两部分自动对应Status和Name,剩下的所有内容会被完整保留为DisplayName。 - 创建DataFrame并写入CSV:把处理好的数据和表头传入DataFrame,再导出为符合要求的CSV文件。
完整代码如下:
import pandas as pd mylines = ['Status Name DisplayName', 'Running MSSQL$DEV SQL Server (DEV)', 'Running MSSQL$TEST SQL Server (TEST)', 'Running MSSQLLaunchpad$DEV SQL Server Launchpad (DEV)', 'Running SQLAgent$DEV SQL Server Agent (DEV)', 'Running SQLAgent$TEST SQL Server Agent (TEST)', 'Running SQLBrowser SQL Server Browser', 'Running SQLTELEMETRY$DEV SQL Server CEIP service (DEV)', 'Running SQLTELEMETRY$TEST SQL Server CEIP service (TEST)', 'Running SQLWriter SQL Server VSS Writer'] # 提取列标题 column_headers = mylines[0].split() # 处理每一行数据,拆分出三列内容 processed_data = [] for line in mylines[1:]: # maxsplit=2 确保只拆分前两个空格,DisplayName完整保留 status, service_name, display_name = line.split(maxsplit=2) processed_data.append([status, service_name, display_name]) # 创建符合要求的DataFrame df = pd.DataFrame(processed_data, columns=column_headers) # 查看前几行验证结果 print(df.head()) # 写入CSV文件(index=False 避免写入行索引) df.to_csv('sql_server_services.csv', index=False)
代码说明
split(maxsplit=2):这是解决问题的核心,它会将字符串从左到右最多拆分2次,生成3个元素的列表,完美规避了DisplayName含空格导致的拆分错误。index=False:写入CSV时加上这个参数,不会把DataFrame的行索引写入文件,让最终的CSV格式更干净规范。
运行这段代码后,你得到的DataFrame就会有Status、Name、DisplayName三列,导出的CSV文件也完全符合你的预期格式。
内容的提问来源于stack exchange,提问作者Fahim Tahmeed
相关产品推荐
相关产品推荐

