簡體   English   中英

我如何使用另一個 CSV 名稱列表搜索 CSV 並返回是否使用 python 找到特定單詞

[英]How can i search a CSV using another CSV list of names and return if it find a specific word using python

所以我有一個包含大約 160 個名稱的 CSV 列表,我需要編寫一個腳本來在一個更大的列表(1800)上搜索該 160 個列表的每個名稱,該列表包含名稱和有關該名稱的其他信息列。 在找到任何匹配的結果后,它需要在該行上找到一個特定的單詞並打印 Initially name。

小列表僅包含名稱。 更大的列表包含名稱和幾行信息。

基本上,取 CSV 160name 列表 -> 搜索更大的 1800 CSV -> 當它在更大的列表中找到名稱時,檢查整行是否有特定單詞 -> 如果找到,則返回名稱甚至整行。 (無需對沒有匹配名稱的行做任何事情)

到目前為止我所擁有的(請記住,我只是一個不太精通代碼的人,只做了非常基本的事情)並且還遠未完成,而且我很卡住

import pandas as pd
specificlist = pd.read_csv('Small_list.csv')
General_list = pd.read_csv('Bigger_list.csv')
small_list = small_list.add_prefix('1_')
BigList = General_list.add_prefix('2_')


def compare_files(df):
    if df['1_Name'] == df['2_Name']:
        if df['2_Pet'] == 'Yes': 
            return 1
        else:
            return 0

https://prnt.sc/wrdlz0我正在嘗試的視覺表示。

關於場景的細節: A - 姓名列表 B- 姓名列表,以及相關地址、DoB、是/否寵物(此列上的“是”或“否”字樣答案在任何其他列中均不存在)。

我想返回列表 A 中擁有寵物的人的姓名

像這樣的東西:

import pandas

names = []
with open("Small_list.csv", "r") as f:
    r = pandas.read_csv(f)
    names = list(r["name"])

with open("Bigger_list.csv", "r") as f:
    # Skip the first line
    f.readline()
    for line in f:
        cur_name = line.split(",")[0]
        if cur_name in names and cur_name not in available_names:
            available_names.append(cur_name)

在這個問題中,你真的不需要 pandas。 事實上,我可以刪除它:

names = []
available_names = []

with open("Small_list.csv", "r") as f:
    # Skip the first line
    f.readline()
    for line in f:
        names.append(line.strip("\n"))

with open("Bigger_list.csv", "r") as f:
    # Skip the first line
    f.readline()
    for line in f:
        cur_name = line.split(",")[0]
        if cur_name in names and cur_name not in available_names:
            available_names.append(cur_name)

您可以合並兩個數據框,然后 select 合並 Pets 為 No 的行,select 合並名稱和 pets 值。

import pandas as pd

names_df = pd.DataFrame({'Name': ['Anne', 'John', 'Lisa', 'Marie']})
data_df = pd.DataFrame({
    'Name': ['Anne', 'Kevin', 'Clio', 'Lisa', 'Raisa', 'Matt', 'John', 'Marie'],
    'Age': [23, 27, 43, 28, 32,19, 34, 21],
    'Pets': ['Yes','Yes','No','No','Yes','No','Yes','No']
})
merged_df = names_df.merge(data_df, on='Name')

print(merged_df.loc[merged_df['Pets'] == 'No'][['Name', 'Pets']])

OUTPUT

    Name Pets
2   Lisa   No
3  Marie   No

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM