我是 Python 家族的新手,几天来一直在尝试解决合并两个 Excel 文件的问题。我无休止地研究了合并,并试图调整我的代码以满足我的需求,但它一直没有奏效。我想知道我是否可以就我的代码为什么不工作获得任何帮助。我觉得这可能是其他使用 Python 的人的常见问题,所以希望这也能帮助其他人。我很感激任何评论!
我有两个 Excel 文件,“Chinese Scores3.csv”和“Chinese Scores4.csv”,我试图通过一个 ID 合并它们,每个公司都是唯一的。除了公司 ID,每个 Excel 文件都没有匹配的列。此外,并非所有公司都列在这两个文件中。有些列出了两者,但其他列出了一个或另一个。我想将公司 ID 的所有信息一起附加到 Excel 表上的一行中。即第一个excel文件列是ID、JanSales、FebSales等,第二个excel文件列是ID、CreditScore、EMMAScore等。我要创建的excel文件有列:ID、JanSales、FebSales、CreditScore、EMMAScore全部根据公司ID。
这有意义吗?这就像在 excel 中使用 VLOOKUP,但我想使用 Python 来做到这一点。无论如何,这是我的编码,它不起作用。我尝试操纵它,但它不起作用。我希望得到反馈!
import sys
import csv
def main(arg):
headers= []
for arg in 'Chinese Scores3.csv':
with open(arg) as f:
curr = 'Chinese Scores3.csv'.reader(f).next()
headers.append(curr)
try:
keys=list( set(keys) & set (curr))
except NameError:
keys = curr
header = list(keys)
for h in headers:
header += [ k for k in h if k not in keys ]
data = {}
for arg in 'Chinese Scores4.csv':
with open(arg) as f:
reader = 'Chinese Scores4.csv'.DictReader(f)
for line in reader:
data_key = tuple([ line[k] for k in keys ])
if not data_key in data: data[data_key] = {}
for k in header:
try:
data[data_key][k] = line[k]
except KeyError:
pass
for key in data.keys():
for col in header:
if key in data and not col in data[key]:
del( data[key] )
print ','.join(header)
for key in sorted(data):
row = [ data[key][col] for col in header ]
print ','.join(row)
if __name__ == '__main__':
sys.exit( main( sys.argv[1:]) )