仅当 2 个 csv 文件中的 2 列与 Python-Pandas 匹配时才输出 CSV 行
Output CSV row only if 2 columns in 2 csv files match with Python-Pandas
Python 的新手。我有 2 个 csv 文件,它们都有学生姓氏和学生名字(Re-enrolledonline.csv 和 currentschoolroster.csv - 列数和列标题不同,但两个文件都包含此信息)。然后我需要创建一个 CSV,其中包含 Re-enrolledonline.csv 中未找到但在 currentschoolroster.csv 中的学生列表。我可以用下面的代码匹配一列而不会出现问题,但我似乎找不到关于如何仅在名字和姓氏列都匹配的情况下才写入新文件的好资源。
谢谢!
import pandas as pd
f1 = pd.read_csv('/users/Desktop/CompareFiles/currentschoolroster.csv')
f2 = pd.read_csv('/users/Desktop/CompareFiles/Re-enrolledonline.csv')
notmatched = f1[~f1.Last_Name.isin(f2.StudentLastName)]
notmatched.to_csv('/users/Desktop/CompareFiles/notmatched.csv')
Pandas 在索引中对 和 使用 &
,对 或 使用 |
:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#boolean-indexing
那应该没问题:
notmatched = f1[~f1.Last_Name.isin(f2.StudentLastName) \
& (~f1.First_Name.isin(f2.StudentFirstName))]
PS。请注意,如果 CSV 很大,isin()
会很慢。
Python 的新手。我有 2 个 csv 文件,它们都有学生姓氏和学生名字(Re-enrolledonline.csv 和 currentschoolroster.csv - 列数和列标题不同,但两个文件都包含此信息)。然后我需要创建一个 CSV,其中包含 Re-enrolledonline.csv 中未找到但在 currentschoolroster.csv 中的学生列表。我可以用下面的代码匹配一列而不会出现问题,但我似乎找不到关于如何仅在名字和姓氏列都匹配的情况下才写入新文件的好资源。
谢谢!
import pandas as pd
f1 = pd.read_csv('/users/Desktop/CompareFiles/currentschoolroster.csv')
f2 = pd.read_csv('/users/Desktop/CompareFiles/Re-enrolledonline.csv')
notmatched = f1[~f1.Last_Name.isin(f2.StudentLastName)]
notmatched.to_csv('/users/Desktop/CompareFiles/notmatched.csv')
Pandas 在索引中对 和 使用 &
,对 或 使用 |
:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#boolean-indexing
那应该没问题:
notmatched = f1[~f1.Last_Name.isin(f2.StudentLastName) \
& (~f1.First_Name.isin(f2.StudentFirstName))]
PS。请注意,如果 CSV 很大,isin()
会很慢。