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

时间:2017-06-01 08:14:31

标签: python file csv filter row

美好的一天

所以我试图根据file1过滤file2,其中file1是file2的子集。但file2有描述列,我需要能够分析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()

任何想法?

1 个答案:

答案 0 :(得分:0)

假设您的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

即。只是两个文件中都存在的文件。

由于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)