使用Pandas链式方法读写CSV文件报错,请求修正代码
修正后的代码及说明
问题原因
原代码误用apply方法,apply默认逐行/逐列处理数据,而我们需要对整个DataFrame执行保存操作,这会导致逻辑混乱;同时apply的返回值会生成新的DataFrame,不符合保存文件的需求。
修正代码
import pandas as pd (pd.read_csv('https://www.stats.govt.nz/assets/Uploads/Business-financial-data/Business-financial-data-September-2022-quarter/Download-data/business-financial-data-september-2022-quarter-csv.zip') .assign(New=lambda x: 'NEW') .pipe(lambda df: df.to_csv(f"{df['New'].iloc[0]}_File.csv")))
关键修改点
- 用
pipe替代apply:pipe可接收整个DataFrame作为参数,适配链式调用中针对完整数据集的操作场景 - 用
iloc[0]替代values[0]:符合pandas规范写法,可读性更强 - 使用f-string拼接文件名:语法简洁直观
如果需要按指定列的不同值拆分保存多个文件,可使用分组写法:
import pandas as pd (pd.read_csv('https://www.stats.govt.nz/assets/Uploads/Business-financial-data/Business-financial-data-September-2022-quarter/Download-data/business-financial-data-september-2022-quarter-csv.zip') .assign(New=lambda x: 'NEW') .groupby('New') .apply(lambda group: group.to_csv(f"{group.name}_File.csv")))
这段代码会按New列的不同值分组,每个分组单独保存为CSV文件。
内容的提问来源于stack exchange,提问作者Brian19931
相关产品推荐
相关产品推荐

