Python中字符串DataFrame转CSV及glob导出CSV报错解决
嘿,我来帮你搞定这两个Python小问题!
问题1:如何在Python中将字符串类型的DataFrame转换为CSV文件?
其实不管你的DataFrame里的数据是字符串还是其他类型,只要它是pandas的DataFrame对象,用to_csv()方法就能轻松导出成CSV文件。下面给你两种常见场景的解决方案:
场景1:已经有一个包含字符串的DataFrame
直接调用to_csv()即可,示例代码如下:
import pandas as pd # 创建一个含字符串列的示例DataFrame movie_data = { "Title": ["The Shawshank Redemption", "The Dark Knight", "Pulp Fiction"], "Genre": ["Drama", "Action", "Crime"] } df = pd.DataFrame(movie_data) # 导出为CSV,index=False用来去掉自动生成的行索引(可选,按需添加) df.to_csv("movie_list.csv", index=False)
场景2:从字符串内容构建DataFrame再导出
如果你的“字符串类型的DataFrame”是指一段类似表格的文本字符串,那可以先把它转成DataFrame再导出:
import pandas as pd from io import StringIO # 示例:字符串形式的表格数据 str_table = """Title,Genre The Shawshank Redemption,Drama The Dark Knight,Action Pulp Fiction,Crime""" # 将字符串转为DataFrame df = pd.read_csv(StringIO(str_table)) # 导出为CSV df.to_csv("movie_list.csv", index=False)
问题2:将glob获取的文件名列表正确导出为CSV文件
先给你拆解报错原因:你循环里的f是单个文件名字符串,不是pandas的DataFrame对象,自然没有to_csv()方法!而且你之前写的导出格式是.docx(Word文档格式),这也不对,CSV文件要用.csv后缀。下面给你两种靠谱的解决方案:
方法一:用pandas快速处理(推荐)
把文件名列表转成DataFrame再导出,代码更简洁:
import glob import pandas as pd # 用原始字符串r""避免路径里的转义字符出问题 path = r'D:\Movies\American and Brit Cinema' # 直接在列表推导里完成文件名截取 files = [f[35:] for f in glob.glob(path + r"\**\*.avi", recursive=True)] # 把列表转成带列名的DataFrame df = pd.DataFrame(files, columns=["Movie Filename"]) # 导出为CSV文件 df.to_csv("EnglishMovies.csv", index=False)
方法二:用Python内置csv模块(无额外依赖)
如果不想用pandas,直接用Python自带的csv模块也能搞定:
import glob import csv path = r'D:\Movies\American and Brit Cinema' files = [f[35:] for f in glob.glob(path + r"\**\*.avi", recursive=True)] # 打开文件写入,newline=""避免Windows下出现空行,utf-8支持特殊字符 with open("EnglishMovies.csv", "w", newline="", encoding="utf-8") as csv_file: writer = csv.writer(csv_file) # 先写表头(可选,不需要的话可以删掉这行) writer.writerow(["Movie Filename"]) # 逐个写入每个文件名 for name in files: writer.writerow([name])
内容的提问来源于stack exchange,提问作者user11952178
相关产品推荐
相关产品推荐

