pandas DataFrame未存入全部遍历读取的txt文件数据,如何解决该问题?
问题修复方案
错误原因
- 存储数据的
list_dir列表被你放在了for循环内部初始化,每遍历一个文件就会清空原有列表,最终列表里仅会保留最后一次循环读取到的单条文件数据。 os.listdir()返回的文件名列表顺序是未定义的,和你默认认为的文件排序规则不一致,所以最终留存的那条数据并不是你以为的遍历最后一条。
修复方法
把list_dir的初始化逻辑移动到for循环外部即可,修改后的完整代码如下:
import pandas as pd import os # 列表初始化放到循环外面 list_dir = [] for review in os.listdir('ebert_reviews'): with open(os.path.join('ebert_reviews',review),encoding='utf-8') as file: title = file.readline()[:-1] url = file.readline()[:-1] review_text = file.read() list_dir.append({'title':title, 'url':url, 'review_text':review_text}) df = pd.DataFrame(list_dir) print(df)
可选优化
如果你需要按特定顺序读取文件,可以先对os.listdir()的返回结果做排序处理,比如按文件名升序读取:
for review in sorted(os.listdir('ebert_reviews')): # 后续读取逻辑保持不变
内容的提问来源于stack exchange,提问作者Marco Nashaat
相关产品推荐
相关产品推荐

