extracción de filas desde un archivo CSV basado en palabras clave específicas

introduzca la descripción de la imagen aquí. He creado un código para ayudarme a recuperar los datos del archivo csv.

import re keywords = {"metal", "energy", "team", "sheet", "solar" "financial", "transportation", "electrical", "scientists", "electronic", "workers"} # all your keywords keyre=re.compile("energy",re.IGNORECASE) with open("2006-data-8-8-2016.csv") as infile: with open("new_data.csv", "w") as outfile: outfile.write(infile.readline()) # Save the header for line in infile: if len(keyre.findall(line))>0: outfile.write(line) 

Necesito buscar cada palabra clave en dos columnas principales que son “posición” y “descripción del trabajo”, y luego tomar la fila completa que incluye estas palabras y escribirlas en el nuevo archivo. ¿Alguna idea sobre cómo se puede hacer esto de la manera más simple?

Intente esto, haga un bucle en un dataframe y vuelva a escribir un nuevo dataframe en un archivo csv.

 import pandas as pd keywords = {"metal", "energy", "team", "sheet", "solar", "financial", "transportation", "electrical", "scientists", "electronic", "workers"} # all your keywords df = pd.read_csv("2006-data-8-8-2016.csv", sep=",") listMatchPosition = [] listMatchDescription = [] for i in range(len(df.index)): if any(x in df['position'][i] or x in df['Job description'][i] for x in keywords): listMatchPosition.append(df['position'][i]) listMatchDescription.append(df['Job description'][i]) output = pd.DataFrame({'position':listMatchPosition, 'Job description':listMatchDescription}) output.to_csv("new_data.csv", index=False) 

EDITAR: Si tiene muchas columnas para agregar, el siguiente código modificado hará el trabajo.

 df = pd.read_csv("2006-data-8-8-2016.csv", sep=",") output = pd.DataFrame(columns=df.columns) for i in range(len(df.index)): if any(x in df['position'][i] or x in df['Job description'][i] for x in keywords): output.loc[len(output)] = [df[j][i] for j in df.columns] output.to_csv("new_data.csv", index=False) 

Puede hacer esto utilizando pandas de la siguiente manera, si está buscando filas que contengan exactamente una palabra de la lista de palabras clave:

 keywords = ["metal", "energy", "team", "sheet", "solar" "financial", "transportation", "electrical", "scientists", "electronic", "workers"] # read the csv data into a dataframe # change "," to the data separator in your csv file df = pd.read_csv("2006-data-8-8-2016.csv", sep=",") # filter the data: keep only the rows that contain one of the keywords # in the position or the Job description columns df = df[df["position"].isin(keywords) | df["Job description"].isin(keywords)] # write the data back to a csv file df.to_csv("new_data.csv",sep=",", index=False) 

Si está buscando subcadenas en las filas (por ejemplo, buscando financial engineering financial en financial engineering ), puede hacer lo siguiente:

 keywords = ["metal", "energy", "team", "sheet", "solar" "financial", "transportation", "electrical", "scientists", "electronic", "workers"] searched_keywords = '|'.join(keywords) # read the csv data into a dataframe # change "," to the data separator in your csv file df = pd.read_csv("2006-data-8-8-2016.csv", sep=",") # filter the data: keep only the rows that contain one of the keywords # in the position or the Job description columns df = df[df["position"].str.contains(searched_keywords) | df["Job description"].str.contains(searched_keywords)] # write the data back to a csv file df.to_csv("new_data.csv",sep=",", index=False)