* * @param dfList Array * @param axis number * @returns DataFrame
(dfList: Array<DataFrame | Series>, axis: number )
| 24 | * @returns DataFrame |
| 25 | */ |
| 26 | function processColumn(dfList: Array<DataFrame | Series>, axis: number ): DataFrame { |
| 27 | let allDf: any = {} |
| 28 | let dublicateColumns: any = {} |
| 29 | let maxLen = 0 |
| 30 | for(let i=0; i < dfList.length; i++) { |
| 31 | let df = dfList[i] |
| 32 | let columnData: ArrayType2D; |
| 33 | if ( df instanceof DataFrame) { |
| 34 | columnData = df.getColumnData as ArrayType2D |
| 35 | } else { |
| 36 | columnData = [df.values] as ArrayType2D |
| 37 | } |
| 38 | let columns = df.columns |
| 39 | for(let j=0; j < columns.length; j++) { |
| 40 | let column = columns[j] |
| 41 | let colData: ArrayType1D = columnData[j] |
| 42 | if (colData.length > maxLen) { |
| 43 | maxLen = colData.length |
| 44 | } |
| 45 | if (!(column in allDf)) { |
| 46 | allDf[column] = colData |
| 47 | dublicateColumns[column] = 0 |
| 48 | } else { |
| 49 | dublicateColumns[column] +=1 |
| 50 | column += dublicateColumns[column] |
| 51 | allDf[column] = colData |
| 52 | } |
| 53 | } |
| 54 | } |
| 55 | Object.keys(allDf).forEach(value => { |
| 56 | let colLength = allDf[value].length |
| 57 | if (colLength < maxLen) { |
| 58 | let residualLen = maxLen - colLength |
| 59 | let nanList = new Array(residualLen).fill(NaN) |
| 60 | allDf[value].push(...nanList) |
| 61 | } |
| 62 | }) |
| 63 | |
| 64 | return new DataFrame(allDf) |
| 65 | } |
| 66 | |
| 67 | /** |
| 68 | * Concat data along rows |