使用Python为3个csv文件创建一个输出文件

2024-09-26 22:50:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有3个CSV文件。名字在下面

AD.csv
ID.csv
MD.csv

AD.csv
A.Net    ATVS
A&E HD  60 Days In
AXSTV    60 Days : Watch Along
BET HD   Behind Bars: Rookie Year
Bloomberg    Biggie: The Life of Notorious B.I.G.

ID.csv
I.Net  ITvs
AETVHD  60 Days In
AXSTV   60 Days : Watch Along 
BETHD    Behind Bars: Rookie Year
BLOOMHD Dog the Bounty Hunter

MD.csv
A.Net   I.Net
A&E HD  AETVHD
AXSTV   AXSTV
BET HD  BETHD
Bloomberg   BLOOMHD

在MD.csv中,“a.net”=“I.net” 这意味着我必须将“atvs”中的数据映射到“itvs”,其中MD.csv“a.net=I.net” 我是新来写python脚本的,有人能帮我映射一下吗

import csv
with open('E:/ad.csv', 'r') as lookuplist:
with open('E:/id.csv', 'r') as csvinput:
with open('vlookupout', 'w') as output:

reader = csv.reader(lookuplist)
reader2 = csv.reader(csvinput)
writer = csv.writer(output)

for 'itvs' in reader2:
for 'atvs' in reader:
if itvs[0] == atvs[0]:
itvs.append(atvs[1:])
writer.writerow(itvs)

Tags: csvnetaswithopendaysmdad
2条回答

如果没有任何依赖约束,请使用pandas库中的DataFrame

使用数据帧,您可以简单地将csv作为表读取和加载

ad = pd.read_csv('E:\ad.csv')
id = pd.read_csv('E:\id.csv')

。。。并对它们执行联接/合并/聚合

result = pd.merge(ad,
             id[['I.Net', 'ITVs']],
             on='I.Net')

它将更容易和灵活,根据您的要求

你可以用熊猫来做这个

import pandas as pd

# read in the csv's
ad_df = pd.read_csv('AD.csv', sep=r'\s\s+', engine='python')
id_df = pd.read_csv('ID.csv', sep=r'\s\s+', engine='python')
md_df = pd.read_csv('MD.csv', sep=r'\s\s+', engine='python')

# Combine the csv's using MD.csv
result = pd.merge(ad_df,md_df[['A.Net', 'I.Net']], on='A.Net')
result = pd.merge(result,id_df[['I.Net', 'ITvs']], on='I.Net')

# in case you want to drop 'I.Net' add:
result.drop('I.Net', axis=1, inplace=True)

#export to csv:
result.to_csv('result.csv', index=False)

注意:你的CSV的头文件名有些不一致。我在剧本中完全按照规定使用了名字。 正如我在评论中提到的,你的csv分离看起来不太对劲。我在csv中做了一个小改动,在“BLOOMHD”和“Dog the…”之间添加了一个额外的空格

相关问题 更多 >

    热门问题