Python程序:循环输入CSV文件中的字符串;在另一个CSV文件中搜索匹配的字符串;将匹配的行内容返回给另一个CSV

pb3s4cty  于 8个月前  发布在  Python
关注(0)|答案(2)|浏览(113)

我有第一个Excel文件user_details.csv


的数据
我有另一个Excel文件user_mangers.csv



我需要循环并从user_details.csv中逐个选择每个用户,从user_managers.csv中找到对应的管理员,并将详细信息附加到新的csv文件中,比如像下面这样的user_details_managers.csv


vohkndzv

vohkndzv1#

如果你想减少依赖,这是你如何使用标准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())

字符串

eulz3vhy

eulz3vhy2#

可以用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')

字符串
这里发生了什么?我使用pandas将两个csv文件读入到多个框架中。然后我们将它们合并到一个框架中:在“左边”的框架(这里是user_details)中,我们合并了“user”列,在“右边”的框架(user_magers)中,它接受了“username”列。这意味着它将合并从左边合并每个“user”和从右边合并“username”。
结果是一个单一的框架,我使用.to_csv()将其保存为csv。

相关问题