Я написал метод, который будет группировать мои объекты DataFrame. Я начал писать, но это не работает, и я не знаю, что с этим делать.
Исключение: java.lang.ArrayIndexOutOfBoundsException: 0
Понятия не имею, как это сделать по-другому. Кто-нибудь может мне помочь?
public Groups groupby(String colname){
Groups g = new Groups();
LinkedList<DataFrame> group = new LinkedList<>();
g.ids = new String[1];
g.ids[0] = colname;
group.add(this.iloc(1));
int size = 0;
for(int i = 0; i<myDatabase.get(colname).size(); i++){
Value value = myDatabase.get(colname).get(i);
boolean added = false;
int length = 0;
for(DataFrame d : group){
System.out.println("LOL");
if(d.get(colname).get(0).equals(value)){
added = true;
for(String name : d.colNames){
Value v = myDatabase.get(name).get(i);
d.get(name).add(v);
length++;
}
}
}
if(added = false){
group.add(iloc(i));
size++;
length++;
}
}
g.len = new int[size];
int i = 0;
for(DataFrame df : group){
g.len[i] = df.myDatabase.get(df.colNames[0]).size();
i++;
System.out.println(df.myDatabase.get(df.colNames[0]).size());
System.out.println("LOL");
}
return g;
}
public Groups groupby(String[] colnames){
LinkedList<DataFrame> temp = this.groupby(colnames[0]).grouped;
Groups result = new Groups();
int s = 0;
if(colnames.length > 1){
s = 1;
}
for(int i = s; i < colnames.length; i++){
for(DataFrame d : temp){
LinkedList<DataFrame> groups = d.groupby(colnames[i]).grouped;
for (DataFrame df : groups){
result.grouped.add(df);
}
}
}
int index = 0;
result.len = new int[result.grouped.size()];
for(DataFrame gr : result.grouped){
result.len[index] = gr.size();
index++;
}
result.ids = colnames;
return result;
}
А мой класс DataFrame выглядит так:
public class DataFrame {
private Map<String, ArrayList<Value>> myDatabase;
protected Map<String, Class<? extends Value>> colType;
protected String [] colNames;
protected ArrayList<Class<? extends Value>> dTypes;