Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在两个打印中匹配相同的单词_Python_Csv_Pandas - Fatal编程技术网

Python 在两个打印中匹配相同的单词

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

我正在使用操作系统列出目录中的文件名。我还使用熊猫来列出CSV文件中一列的内容。我已经打印了这两张照片的结果,现在我想匹配两张照片中出现的名称,并确定哪些名称是一张照片独有的。下面是我的代码,它获取CSV文件的名称和内容

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(文件)
。当你打印数据框时,你会在每个文件旁边看到相应的结果。我想出了另一种方法,我将在我的问题中发布,我使用了你的解决方案,所以谢谢!