Python 在两个打印中匹配相同的单词
我正在使用操作系统列出目录中的文件名。我还使用熊猫来列出CSV文件中一列的内容。我已经打印了这两张照片的结果,现在我想匹配两张照片中出现的名称,并确定哪些名称是一张照片独有的。下面是我的代码,它获取CSV文件的名称和内容Python 在两个打印中匹配相同的单词,python,csv,pandas,Python,Csv,Pandas,我正在使用操作系统列出目录中的文件名。我还使用熊猫来列出CSV文件中一列的内容。我已经打印了这两张照片的结果,现在我想匹配两张照片中出现的名称,并确定哪些名称是一张照片独有的。下面是我的代码,它获取CSV文件的名称和内容 import os, sys import pandas as pd path = "/mydir/csvfile" dirs = os.listdir( path ) for file in dirs: print file fields = ['Column
import os, sys
import pandas as pd
path = "/mydir/csvfile"
dirs = os.listdir( path )
for file in dirs:
print file
fields = ['Column']
df = pd.read_csv('/mydir/csv_file', skipinitialspace=True, usecols=fields)
print df.Column
*编辑*
我已经想出了这个有效的解决方案
import os, sys
import pandas as pd
path = "/mdir/csvfile"
dirs = os.listdir( path )
list_1 = [file for file in dirs]
fields = ['column']
df = pd.read_csv('/mydir/csvfile', skipinitialspace=True, usecols=fields)
list_2 = df.column.values.tolist()
list_3=[]
for i in list_1:
if i in list_2:
list_3.append(i + " True")
else:
list_3.append(i + " False")
print list_3
据我所知,你有两个清单。一个来自目录,另一个来自Pandas中的列。您需要两个列表中的元素以及每个列表唯一的元素。假设您的列表如下所示:
List1 = ['a' , 'b' , 'c' , 'd', 'e', 'f']
List2 = ['c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i']
overlap = [i for i in List1 if i in List2]
nonOverlapList1 = [j for j in List1 if j not in overlap]
nonOverlapList2 = [k for k in List2 if k not in overlap]
然后,生成我认为您需要的代码可以使用列表理解,如下所示:
List1 = ['a' , 'b' , 'c' , 'd', 'e', 'f']
List2 = ['c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i']
overlap = [i for i in List1 if i in List2]
nonOverlapList1 = [j for j in List1 if j not in overlap]
nonOverlapList2 = [k for k in List2 if k not in overlap]
而不是
for file in dirs:
print file
建立一个列表:
files = [file for file in dirs]
然后使用数据帧检查:
df.Column.isin(files) # this will check elementwise
Out:
0 True
1 True
2 True
3 True
Name: Column, dtype: bool
或
意识到我忘了真正包括一个问题。我该怎么做呢?有没有办法比较和匹配两种打印?不要打印,把这些值保存到变量中,然后比较这些变量。欢迎您。请注意,如果
文件
有额外的文件,则此操作可能会丢失。您可以用另一种方法进行比较:pd.Series(files).isin(df.Column)
,以确保正确。您知道我如何才能使此方法起作用,同时给出元素的true或false吗?e、 g 0 12fhaj True,1 757dyah False,2 fhjf8282 True…您可以将其分配给当前数据帧:df['check']=df.Column.isin(文件)
。当你打印数据框时,你会在每个文件旁边看到相应的结果。我想出了另一种方法,我将在我的问题中发布,我使用了你的解决方案,所以谢谢!