2017-06-01 51 views
0

好日子所有過濾行基於另一個csv文件,並保存在一個新的文件過濾的數據

所以我試圖根據文件1,其中文件1是來自file2的一個子集來過濾文件2。但file2有我需要能夠分析file1中的數據的描述列。我想要做的是過濾file2,並獲取他們的描述文件1中的標題。我想這一點,但我沒有放棄知道這是否是完全正確的,再加上它是工作,但我沒有得到任何的文件保存在我的大型機

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() 

什麼想法?

+0

有你爲什麼不讀文件1和文件2到dataframes什麼特別的原因? – asongtoruin

+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) 
+0

我明白了。這是完美的工作!非常感謝:D –

+0

不用擔心!您可以將其標記爲答案和/或使用答案左側的按鈕進行表決。 – asongtoruin