Python遍历DataFrame列唯一值拆分导出CSV仅生成最后一个文件
问题成因
仅生成Account3.csv是因为文件名定义逻辑的位置错误:
save_as = Acct + ".csv"写在for循环外部,这行代码执行时循环尚未启动,Acct不会随循环迭代更新,最终只会保留遍历完账号列表后的最后一个值Account3- 循环内三次导出操作都写入同一个固定路径的文件,前两次生成的文件直接被后续写入覆盖,最终仅保留最后一次导出的Account3对应内容。
修正后代码
将文件名拼接逻辑移到循环内部,每次迭代时动态生成当前账号对应的导出路径即可:
import pandas as pd data = [('Account1', 'ibm', 20), ('Account1', 'aapl', 30), ('Account1', 'googl', 15), ('Account1', 'cvs', 18), ('Account2', 'wal', 24), ('Account2', 'abc', 65), ('Account2', 'bmw', 98), ('Account2', 'deo', 70), ('Account2', 'glen', 40), ('Account3', 'aapl', 50), ('Account3', 'googl', 68), ('Account3', 'orcl', 95)] data_df = pd.DataFrame(data, columns = ['Acct', 'ticker', 'qty']) acctlist = data_df["Acct"].drop_duplicates() save_to = "c:/temp/csv/" for Acct in acctlist: Acct_df = data_df[data_df["Acct"] == Acct] # 动态拼接当前账号的导出路径 export_path = save_to + Acct + ".csv" # 传入index=False可避免导出csv时附带pandas默认的行索引列 Acct_df.to_csv(export_path, index=False)
运行后会在指定目录下生成Account1.csv、Account2.csv、Account3.csv三个文件,每个文件内对应当前账号的所有行数据。
内容的提问来源于stack exchange,提问作者Duffman_77
相关产品推荐
相关产品推荐

