python - 读取多个 CSV 并根据文件名 python 中的年份将这些 CSV 合并到单独的文件中
问题描述
假设我有以下数据集已成功读入我的笔记本:
data1-format1-1991-1992.csv
data2-format1-1993-1994.csv
data3-format1-1995-1996.csv
data4-format2-1991-1992.csv
data5-format2-1993-1994.csv
data6-format2-1995-1996.csv
我可以轻松地从它们自己的目录中读取这些集合,如下所示:
files1 = [filename for filename in os.listdir(master_dir_1) if filename.startswith("data-")] # would do same for second set of files, in master_dir_2
for filename in files1:
df = pd.read_csv(filename)
print(df)
这会将它们打印在一帧中 - 但我需要将它们读入,然后pd.merge()
根据文件名中的年份每个单独的文件。例如,data1-format1-1991-1992.csv
与 连接data1-format2-1991-1992.csv
,等等。
该过程将使用上面的循环从它们自己的目录中读取两组,然后有另一个循环根据文件名中的匹配年份进行组合和保存(我认为)。如何根据年份拆分,并分别保存每个加入的文件,年份在保存的 csv 名称中?我有读取单个数据集和加入/保存的过程,但没有用于多个读取、连接和保存的过程。
这个问题让我了解了一些情况,因为它是如何.format()
利用的。
解决方案
您可以尝试使用 for 循环.groupby
for year, x in df.groupby(['Year']):
x.to_csv(f'data1-format1-{year}.csv', index=False)
推荐阅读
- pandas - 当我们描述分组数据框时,25%、50%、75% 的值是什么?
- tcl - 如何在 Tcl 中创建嵌套字典
- excel - 当搜索值肯定在范围内时,VBA Range.Find() 方法找不到任何东西
- c# - 如何通过串行通信从 Arduino 按钮获取标志?
- docker - AWS ECS 如何在私有桥接网络中启动容器
- android - 谷歌只加载一次原生广告横幅
- kubernetes - 水平 pod Autoscaler 在 GKE 上过于激进地扩展自定义指标
- sql-server - 如何从 SQL 数据透视表中删除空值
- ios - 检测通话时长
- php - 在一页中显示所有用户帖子但查询太慢