![](/img/trans.png)
[英]How can I get a specific valuefrom the csv with using Pandas in 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.