[英]Python program: loop around strings from input csv file; search the matching string in another csv file; return matching row content to another csv
I have the first excel file user_details.csv我有第一个 excel 文件user_details.csv
I have another excel file user_mangers.csv我还有另一个 excel 文件user_mangers.csv
I need to loop and select each of the users from user_details.csv one by one, find the corresponding manager from user_managers.csv and append the details into a new csv file, say user_details_managers.csv like below.我需要循环和 select 每个用户从user_details.csv一个一个地找到相应的经理从user_managers.csv和 append 的细节到一个新的 csv 文件,说user_details_managers.8814148986
Can be easily done with pandas :可以使用pandas轻松完成:
import pandas as pd
user_details = pd.read_csv('user_details.csv')
user_managers = pd.read_csv('user_mangers.csv')
merged_df = user_details.merge(user_managers, how='left', left_on='user', right_on='username')
merged_df.to_csv('user_details_managers.csv')
So what happens here?那么这里发生了什么? I used pandas to read both csv files into dataframes.
我使用 pandas 将两个 csv 文件读入数据帧。 Then we merged them into a single dataframe: on the "left" dataframe (here is user_details) we merged on "user" column, and on the "right" dataframe (user_mangers) it took the "username" column.
然后我们将它们合并为一个 dataframe:在“左侧”dataframe(这里是 user_details)我们合并了“user”列,在“右侧”dataframe(user_mangers)合并了“username”列。 It mean it will combine each "user" from the left with "username" from the right.
这意味着它将把左边的每个“用户”和右边的“用户名”组合起来。
The result is a single dataframe, and I use .to_csv()
to save it back as csv.结果是一个dataframe,我用
.to_csv()
把它存回csv。
PS - Please review how to ask guide, as your question is missing what you tried - StackOverflow community is not here to write code for you but to help you. PS - 请查看如何询问指南,因为您的问题缺少您尝试过的内容 - StackOverflow 社区不是在这里为您编写代码而是为您提供帮助。 Although I answered your question (cause it's quick), usually the community will not help you if your question doesn't meet the minimum standard.
虽然我回答了你的问题(因为它很快),但如果你的问题不符合最低标准,社区通常不会帮助你。
In case you wanted to have less dependencies, this is how you do it with the standard csv
library:如果您想减少依赖性,这就是使用标准
csv
库的方法:
import csv
# collect the corresponding items by username
user_details_managers = {}
with open("./user_details.csv") as details_fp:
reader = csv.reader(details_fp)
# read first row to skip headers
next(reader)
for row in reader:
user, details = row
user_details_managers[user] = [user, details]
with open("./user_managers.csv") as managers_fp:
reader = csv.reader(managers_fp)
# read first row to skip headers
next(reader)
for row in reader:
username, firstname, lastname = row
if username in user_details_managers:
user_details_managers[username].extend([firstname, lastname])
with open("./user_details_managers.csv", "w") as details_managers_fp:
writer = csv.writer(details_managers_fp)
# write headers
writer.writerow(["user", "details", "manager firstname", "manager lastname"])
# write combined rows
writer.writerows(user_details_managers.values())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.