Estoy tratando de tomar un archivo CSV existente, agregarle una cuarta fila y luego recorrer la segunda y la tercera fila para crear los valores de la cuarta fila. Usando Ruby, he creado hashes donde los encabezados son las claves y los valores de columna son los valores hash (por ejemplo: "id"=>"1", "new_fruit" => "apple")
Mi archivo CSV de práctica se ve así: imagen de archivo csv de práctica
Mi objetivo es crear una cuarta columna: "brand_new" (que pude hacer) y luego agregarle valores concatenando los valores de la segunda y tercera fila (en la que estoy atascado). Por el momento, solo tengo un valor de ubicación (x) para los valores de la cuarta columna para poder ver si realmente funcionó agregar la cuarta columna al hash: Resultados con x = 1
Aquí está mi código:
require 'csv' def self.import table = [] CSV.foreach(File.path("practice.csv"), headers: true) do |row| table.each do |row| row["brand_new"] = full_name end table << row.to_h end table end def full_name x = 1 return x end # Add another col, row by row: import.each do |row| row["brand_new"] = full_name end puts importCualquier sugerencia u orientación sería muy apreciada. Gracias.
Simplificó un poco su código. Primero leo el archivo, luego itero sobre el contenido leído.
Nota: Cambie col_sep a coma o elimínelo para usar el valor predeterminado si es necesario.
require "csv" def self.import table = CSV.read("practice.csv", headers: true , col_sep: ";") table.each do |row| row["brand_new"] = "#{row["old_fruit"]} #{row["new_fruit"]}" end puts table endUso el método de lectura para leer el contenido del archivo CSV. Le permite acceder directamente a los valores de columna/celda.
La línea 7 muestra cómo concatenar los valores de columna como una cadena:
"#{row["old_fruit"]} #{row["new_fruit"]}"Consulte esta antigua publicación de SO y los documentos de CSV Ruby para obtener más información sobre cómo trabajar con archivos CSV.