{"id":344,"date":"2019-11-13T12:23:45","date_gmt":"2019-11-13T11:23:45","guid":{"rendered":"http:\/\/justmakeit.es\/?p=344"},"modified":"2019-11-13T12:23:45","modified_gmt":"2019-11-13T11:23:45","slug":"recuperar-parte-de-las-columnas-de-un-dataframe-en-java","status":"publish","type":"post","link":"http:\/\/justmakeit.es\/?p=344","title":{"rendered":"Recuperar parte de las columnas de un DataFrame en Java"},"content":{"rendered":"\n<p>La principal peculiaridad de este caso es que las columnas son variables. Es decir, el grupo de columnas que queremos recuperar del DataFrame global se puede configurar din\u00e1micamente, ya sea a trav\u00e9s de un fichero de properties o de cualquier otro modo.<\/p>\n\n\n\n<p>La lectura del fichero de properties del proyecto&#8230;, en este caso el properties ir\u00e1 dentro del jar del proyecto, pero dejarlo fuera permitir\u00e1 que sea modificable de una manera mucho m\u00e1s sencilla (y peligrosa tambi\u00e9n)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>try {\n\n\tInputStream is = MyClass.class.getResourceAsStream(\"\/com\/things\/principal\/\".concat(Constants.PROPERTIES_FILE_NAME.replace(\"${env}\", ENV)));\n\tProperties prop = new Properties();\n\n\tprop.load(is);\n\n\t\/\/ Comprobamos si la property est\u00e1 en el fichero de configuraci\u00f3n antes de leerla\n\tif (prop.containsKey(Constants.STATIC_FIELD_NAMES)){\n\t\t\/\/ la property es un literal como este: columna_1:tipo_de_dato, columna_2:tipo_de_dato, columna_3:tipo_de_dato..... \n\t\tsetStaticColumns(prop.getProperty(Constants.STATIC_FIELD_NAMES).split(\",\");\n\t}else{\n\t\tlogger.error(\"No se encuentra la property: STATIC.FIELD.NAMES en el fichero de properties\");\n\t\tSystem.exit(-1);\n\t}\n} catch (Throwable e) {\n\n\te.printStackTrace();\n\tlogger.error(\"ERROR al cargar el fichero de configuracion de properties : \".concat(Constants.PROPERTIES_FILE_NAME.replace(\"${env}\", ENV)));\n}\t<\/code><\/pre>\n\n\n\n<p>Tras recuperar la informaci\u00f3n de los properties la tratamos como sea necesaria, y a partir del listado de nombres de columnas ya podemos trabajar contra el DataFrame.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ trasladamos del List de nombres a un String[] los nombres de las columnas\nString[] array = new String[listaNombresColumnas.size()];\nfor( int i = 0; i&lt;listaNombresColumnas.size(); i++ ) {\n\tarray[i] = listaNombresColumnas.get(i);\n}\n\nDataFrame dfStatic = null;\ntry {\n\n\t\/\/ aqu\u00ed tenemos en df el DataFrame del que queremos recuperar s\u00f3lo algunas de las columnas con informaci\u00f3n\n\n\tdfStatic = df.select(array[0], Arrays.copyOfRange(array, 1, array.length));\n\n\t\/\/ lo que hacemos es seleccionar la informaci\u00f3n del DataFrame desde la columna que corresponde a la primera posici\u00f3n del array de nombres y a continuaci\u00f3n desde la segunda posici\u00f3n hasta el tama\u00f1o del array de nombres. Lo cual cubre todas las posiciones del listado de nombres y nos devolver\u00e1 en dfStatic las columnas que queremos\n\n}catch(Throwable e) {\n\tlogger.error(e.getMessage());\n\te.printStackTrace();\n\n}<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La principal peculiaridad de este caso es que las columnas son variables. Es decir, el grupo de columnas que queremos &hellip; <a href=\"http:\/\/justmakeit.es\/?p=344\" class=\"btn btn-readmore\">Read More <span class=\"screen-reader-text\"> \u00abRecuperar parte de las columnas de un DataFrame en Java\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[39,36],"class_list":["post-344","post","type-post","status-publish","format-standard","hentry","category-programacion","tag-dataframe","tag-java"],"_links":{"self":[{"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/posts\/344","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/justmakeit.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=344"}],"version-history":[{"count":1,"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/posts\/344\/revisions"}],"predecessor-version":[{"id":345,"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/posts\/344\/revisions\/345"}],"wp:attachment":[{"href":"http:\/\/justmakeit.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/justmakeit.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=344"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/justmakeit.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}