python - AttributeError:“元组”对象没有属性,正在合并 csv
问题描述
我.csv
在一个文件夹中有多个文件,它们具有相同的结构。前两列包含两个值k1
,k2
第三列包含一个数值。我想迭代这些文件并将它们合并到一个新的csv
中,其中我将有前两列K1
,K2
然后n
是列,每个n
文件一个列。这是我的解决方案:
import glob
import csv
import os
def get_data(filename):
'''function to read the data form the input csv file to use in the analysis'''
with open(filename, 'r') as f:
reader = csv.reader(f)
result = {tuple(row[:2]): row[2] for row in reader}
return result
path='mypath'
for infile in glob.glob(os.path.join(path, '*.csv')):
print ("Current File Being Processed is: " + infile)
#use split to seperate the path and name of the file
(PATH, FILENAME) = os.path.split(infile)
all_data=[]
#adds the data from the csv file to a blank list so it can be operated on
all_data.extend(get_data(infile))
result = {}
for dic in all_data:
for key in (dic.viewkeys() | result.keys()):
if key in dic: result.setdefault(key, []).append(dic[key])
else: result.setdefault(key, []).append(0)
with open('mypath', 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
writer.writeheader()
for data in result:
writer.writerow(data)
但它返回
Traceback (most recent call last):
File "C:\Users\Desktop\p.py", line 26, in <module>
for key in (dic.viewkeys() | result.keys()):
AttributeError: 'tuple' object has no attribute 'viewkeys'
解决方案
result = {tuple(row[:2]): row[2] for row in reader}
您将 key 存储为 tuple(key) ,因此对其进行迭代会为您抛出错误。
推荐阅读
- c++ - 构建被调用函数和对象图的最快方法
- oracle - H2 数据库集成测试中的 SQLGrammar 异常
- javascript - 如何在我的项目中实现 cloudinary
- html - 无法更改 TabStrip 样式
- entity-framework - EF Core GroupBy 查询抛出:无法翻译
- mockito - 用于 Spring 启动测试上下文的模拟 @Component bean
- node.js - Alexa 停止说出我的输出
- javascript - 有没有办法检查每个输入字段的缺失值?
- sql - 删除sql中所有重复的行
- react-native - 在 React Native 日历选择器中,我想通过提供一个函数来禁用某些日期