如何将循环输出结果保存至CSV文件或DataFrame?
解决方案
方法1:用Pandas筛选生成新DataFrame(高效推荐)
不用写循环,直接用Pandas的布尔索引筛选目标数据,排序后添加序号列,既能得到可用的DataFrame,也能直接导出CSV:
# 按Polarity排序,同时筛选出Analysis为Positive的行 positive_df = tweets_df.sort_values(by=['Polarity'])[tweets_df['Analysis'] == 'Positive'].copy() # 添加从1开始的序号列 positive_df['序号'] = range(1, len(positive_df)+1) # 按需保留列(比如只留序号和翻译后的推文) result_df = positive_df[['序号', 'transalted']] # 保存为DataFrame:直接使用result_df即可 # 保存到CSV文件(index=False去掉默认索引,utf-8-sig避免中文乱码) result_df.to_csv('positive_tweets.csv', index=False, encoding='utf-8-sig')
方法2:沿用原循环逻辑收集数据
如果一定要保留原循环的遍历逻辑,可以先把数据存到列表里,再转成DataFrame或直接写入CSV:
转成DataFrame再保存
import pandas as pd j = 1 sortedDF = tweets_df.sort_values(by=['Polarity']) positive_tweets = [] for i in range(sortedDF.shape[0]): # 用iloc[i]避免原索引不连续导致的取值错误 if sortedDF['Analysis'].iloc[i] == 'Positive': positive_tweets.append({'序号': j, '翻译推文': sortedDF['transalted'].iloc[i]}) j += 1 # 转成DataFrame result_df = pd.DataFrame(positive_tweets) # 导出CSV result_df.to_csv('positive_tweets.csv', index=False, encoding='utf-8-sig')
直接写入CSV文件(无需DataFrame)
import csv j = 1 sortedDF = tweets_df.sort_values(by=['Polarity']) # 打开文件写入,newline=''避免空行,utf-8-sig适配中文 with open('positive_tweets.csv', 'w', newline='', encoding='utf-8-sig') as f: writer = csv.writer(f) writer.writerow(['序号', '翻译推文']) # 写入表头 for i in range(sortedDF.shape[0]): if sortedDF['Analysis'].iloc[i] == 'Positive': writer.writerow([j, sortedDF['transalted'].iloc[i]]) j += 1
注意:原代码里的transalted疑似拼写错误,记得根据实际列名调整;用iloc[i]替代直接索引取值,能避免原DataFrame索引不连续导致的报错。
内容的提问来源于stack exchange,提问作者Izzah Salam
相关产品推荐
相关产品推荐

