Python 根据另一个csv文件过滤csv文件中的行,并将过滤后的数据保存到新文件中

Python 根据另一个csv文件过滤csv文件中的行,并将过滤后的数据保存到新文件中,python,file,csv,filter,row,Python,File,Csv,Filter,Row,大家好 所以我尝试根据file1筛选file2,其中file1是file2的子集。但是file2有一个description列,我需要能够分析file1中的数据。我试图做的是过滤file2,只获取file1中的标题及其描述。我尝试过这个,但我不确定它是否完全正确,而且它正在工作,但我没有在我的电脑中保存任何文件 import re import mmap from pandas import DataFrame output = [] with open('file2.csv', 'r') as

大家好

所以我尝试根据file1筛选file2,其中file1是file2的子集。但是file2有一个description列,我需要能够分析file1中的数据。我试图做的是过滤file2,只获取file1中的标题及其描述。我尝试过这个,但我不确定它是否完全正确,而且它正在工作,但我没有在我的电脑中保存任何文件

import re
import mmap
from pandas import DataFrame
output = []
with open('file2.csv', 'r') as f2:
    mm = mmap.mmap(f2.fileno(), 0, access=mmap.ACCESS_READ)
    for line in open('file1.csv', 'r'):
        Title = bytes("")
        nameMatch = re.search(Title, mm)
        if nameMatch:
            # output.append(str(""))
            fulltypes = [ 'O*NET-SOC Code', 'Title' , 'Discription' ]
            final = DataFrame(columns=fulltypes)
            final.to_csv(output.append(str("")))
    mm.close()

有什么想法吗?

假设您的csv文件不是太大,您可以通过读入
pandas
并使用
join
方法来实现。以以下为例:

import pandas as pd

file1 = pd.DataFrame({'Title': ['file1.csv', 'file2.csv', 'file3.csv']})
file2 = pd.DataFrame({'Title': ['file1.csv', 'file2.csv', 'file4.csv'],
                      'Description': ['List of files', 'List of descriptions', 'Something unrelated']})

joined = pd.merge(file1, file2, left_on='Title', right_on='Title')

print joined
这张照片是:

       Title           Description
0  file1.csv         List of files
1  file2.csv  List of descriptions
i、 e.仅包含两个文件中存在的文件

由于
pandas
可以以本机方式将csv读取到数据帧中,因此您可以执行以下操作:

import pandas as pd

file1 = pd.DataFrame.from_csv('file1.csv')
file2 = pd.DataFrame.from_csv('file2.csv')

joined = pd.merge(file1, file2, left_on='Title', right_on='Title')

joined.to_csv('Output.csv', index=False)

您没有将文件1和文件2读入数据帧有什么特别的原因吗?您没有写任何东西。你甚至没有用写模式打开文件。这是完美的工作!非常感谢你:D