这是我的第一个csv文件(作者列表)(单列)
Aaron Harwood
Kenji Kaneda
这是我的第二个csv文件(sigle专栏)
Aaron Harwood | Rajiv Ranjan | Rajkumar Buyya
AlejandroPérez-Méndez| AntonioFernandezGómez-Skarmeta |加布里埃尔 López|ÓscarCánovasReverte
Akinori Yonezawa | Kenji Kaneda | Kenjiro Taura
Aaron Harwood | abcd
Kenji Kaneda | abcde
Aaron Harwood | lxkc
现在我想在另一个.csv文件中打印具有给定作者姓名的所有行。我该如何继续做呢?
我试过这个
import pandas
authors = []
with open("Book1.csv", "r",encoding="ISO-8859-1") as f:
r = pandas.read_csv(f)
authors = list(r["author"])
i=0
with open("trialall.csv", "r",encoding="ISO-8859-1") as f:
f.readline()
for line in f:
if authors[i] in line:
i=i+1
with open("newer.csv", "a", encoding="ISO-8859-1") as f2:
f2.write(line)
f2.write("\n")
print("doing")
请建议更改。我期待输出csv将有这些行
Aaron Harwood | Rajiv Ranjan | Rajkumar Buyya
Akinori Yonezawa | Kenji Kaneda | Kenjiro Taura
Aaron Harwood | abcd
Kenji Kaneda | abcde
Aaron Harwood | lxkc
答案 0 :(得分:0)
您不必为open
每个文件,因为大熊猫会为您做到这一点。由于我没有让你.csv
工作,我只是概述了结构,以便轻松适应任何微小的变化。
你可以做到
authors = pd.read_csv("Book1.csv")["authors"]
df = pd.read_csv("trialall.csv")
df["authors"] = df.str.split("|")
然后你就完成了
filter = df["authors"].apply(lambda x: any([item in k for item in x]))
df[filter].write_csv("newer.csv")