导入 .csv 文件时,在另一个列表中查找和计算一个列表的元素不起作用

find and count the elements of one list in another list don't work when import .csv file

我想检查 list1 的元素是否在 list2 中。如果是这样,我想把元素加起来。

它在没有外部 .csv 文件的情况下工作:

list1 = [1,2,3,4,5]
list2 = [1,2,3]

c = sum(el in list1 for el in list2)
print(c)

但是当我导入 .csv 文件时,预期的答案不正确。

预期答案: 6

import pandas as pd 
list1 = pd.read_csv(r"list1.csv")
list2 = pd.read_csv(r"list2.csv")

cs = sum(el in list1 for el in list2)
print(cs)

list 1 list 2

我觉得和我导入文件的方式有关?或者我需要转换对象吗?欢迎您的帮助:)

你只需要将 list1 和 list2 转换成 numpy 数组就可以了。尝试

import pandas as pd 
import numpy as np
list1 = np.array(pd.read_csv(r"list1.csv"))
list2 = np.array(pd.read_csv(r"list2.csv"))

cs = sum(el in list1 for el in list2)
print(cs)

当您使用 pandas 读取 csv 时,您会得到一个数据框,而您想要使用系列。即使在这种情况下,您的数据框只有一列,您仍然需要指定列:

c = list1['A'].isin(list2['A']).sum()

对于你的情况,你可以打印

print([el for el in list 2])

看看你在循环什么。

您的 list1 实际上不是一个列表,而是一个 DataFrame

innumpy 中的工作方式与在 list 中的工作方式不同,您可以阅读 here.

因此,如果您想坚持使用您的 list 工作代码,您应该 .tolist() 您的 DataFrame.

或按照其他答案中的建议使用 isin