Я думаю, что здесь нет необходимости использовать метод getfilter ()
ArrayList<YourDataModel> data;
.
.
.
Collections.sort(data, new Comparator<YourDataModel>() {
@Override
public int compare(YourDataModel data1, YourDataModel data2) {
if( data1.getDistance() < data2.getDistance() )
return 1;
else
return 0;
}
});
.
.
.
ListView lvData = (ListView) findViewById(R.id.listview1);
MyCustomAdapter adapter = new MyCustomAdapter(this, R.layout.listview_item_row, data);
lvData.setAdapter(adapter);
и использовать метод notifydatachange
, когда вы хотите его обновить
Используйте read_fwf
и задайте имена столбцов по списку:
df = pd.read_fwf('file.csv', header=[0,1])
df.columns = [y for x in df.columns for y in x if not 'Unnamed' in y]
#replace missing values by first column
df.iloc[:, 0] = df.iloc[:, 0].ffill().astype(int)
#set first 2 columns to MultiIndex
df = df.set_index(df.columns[:2].tolist())
print (df)
col1 col2
idx1 idx2
1 1 0.1234 0.2345
2 0.4567 0.2345
3 0.1244 0.5332
2 1 0.4213 0.5233
2 0.5423 0.5423
3 0.5235 0.6233
Я остановился на небольшом изменении кода Джезраэля, который автоматически заботится о количестве индексов. Обратите внимание, что df.columns
изначально имеет вид [(x1,y1), (x2,y2), ..., (xn, yn)]
, где n
- количество столбцов, xi
- метка столбца i
в первой строке заголовка, а yi
- одна из вторая строка заголовка.
df = pandas.read_fwf(f, header=[0,1])
cols = [x for x,_ in df.columns if 'Unnamed' not in x]
idxs = [y for _,y in df.columns if 'Unnamed' not in y]
df.columns = idxs + cols
df[idxs] = df[idxs].ffill()
df.set_index(idxs, inplace=True)