python - 根据列值从单个文件生成多个文件
问题描述
我刚刚开始学习 python,试图将它用于我使用 excel 过滤器操作符执行的一项手动活动。
每个月我都会收到一个文件,我将该 csv 放入 excel 中,然后应用过滤器为运营商字段中的值创建一个新文件,并与相应的运营商共享该文件。
这是我的 csv 中的一些示例数据。我在这里只展示了 2 个运营商,但我有超过 13 个值,
carrier,type,count
DTH,a,123
DTH,b,3123
DTH,c,41341
DTH,d,13411
BLUEDART,a,12123
BLUEDART,b,31231
BLUEDART,c,411
BLUEDART,d,11
预期产出
DTH.csv
carrier,type,count
DTH,a,123
DTH,b,3123
DTH,c,41341
DTH,d,13411
BLUEDART.csv
carrier,type,count
BLUEDART,a,12123
BLUEDART,b,31231
BLUEDART,c,411
BLUEDART,d,11
非常感谢任何帮助或只是指导。
解决方案
仅使用 Python 的标准库:
import csv
def write_output(header_row, carrier_name, c_rows):
print("writing output for "+carrier_name)
with open("c:\\tmp\\"+carrier_name+".csv", "w", newline="") as outfile:
outwriter = csv.writer(outfile, delimiter=",")
outwriter.writerow(header_row)
for outrow in c_rows:
outwriter.writerow(outrow)
with open("c:\\tmp\\carrier.csv", newline="") as csvfile:
creader = csv.reader(csvfile, delimiter=",")
first_row = True
header_row = None
groups = {}
for row in creader:
if first_row:
header_row = row
first_row = False
else:
if not row[0] in groups:
groups[row[0]] = [row]
else:
groups[row[0]].append(row)
for gr in groups:
write_output(header_row, gr, groups[gr])
推荐阅读
- angular - 角度单元测试:错误:没有名称的表单控件的值访问器:'phoneNumber'
- python - 使用 Python/BeautifulSoup 进行 Web 抓取:具有多个指向配置文件的链接的站点 > 需要配置文件内容
- amazon-web-services - 临时拒绝 AWS 中的出站流量
- yocto - bitbake 修补失败
- python - Django服务器没有响应
- javascript - 使用 JqueryUI 拖放多个文件
- python - 如何在python numpy数组中添加字典值
- javascript - Safari 浏览器中 matchMedia 的 addEventListener
- python - 在python中大写
- vue.js - 如何正确配置我的后端以便从我的表单接收数据?我正在使用 Vue.js