导入 .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)
我觉得和我导入文件的方式有关?或者我需要转换对象吗?欢迎您的帮助:)
你只需要将 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
。
in
在 numpy
中的工作方式与在 list
中的工作方式不同,您可以阅读 here.
因此,如果您想坚持使用您的 list
工作代码,您应该 .tolist()
您的 DataFrame
.
或按照其他答案中的建议使用 isin
。
我想检查 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)
我觉得和我导入文件的方式有关?或者我需要转换对象吗?欢迎您的帮助:)
你只需要将 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
。
in
在 numpy
中的工作方式与在 list
中的工作方式不同,您可以阅读 here.
因此,如果您想坚持使用您的 list
工作代码,您应该 .tolist()
您的 DataFrame
.
或按照其他答案中的建议使用 isin
。