порядок сортировки начальной буквы набора в Silverlight DataGrid?

Вот способ сделать это. Допустим, у вас есть следующий фрейм данных:

     date      user    movie
0  2018-01-02  Alicia  Titanic
1  2018-01-13    John  Titanic
2  2018-01-22    John  Titanic
3  2018-04-02    John   Avatar
4  2018-04-05  Alicia   Avatar
5  2018-05-19    John   Avatar

IIUC правильное решение не должно содержать строку 3, поскольку Alicia еще не видел Avatar. Таким образом, вы можете сделать:

df[df.user.eq('Alicia').groupby(df.movie).cumsum()]

     date       user    movie
0  2018-01-02  Alicia  Titanic
1  2018-01-13    John  Titanic
2  2018-01-22    John  Titanic
4  2018-04-05  Alicia   Avatar
5  2018-05-19    John   Avatar

Объяснение:

Следующее возвращает True, где user равно Alicia:

df.user.eq('Alicia')

0     True
1    False
2    False
3    False
4     True
5    False
Name: user, dtype: bool

Теперь вы можете сделать GroupBy фильмы и применить cumsum к группам, поэтому только строки после первого True будут также стать True:

0     True
1     True
2     True
3    False
4     True
5     True
Name: user, dtype: bool

Наконец, используйте boolean indexation на исходном кадре данных, чтобы выбрать интересующие строки.

12
задан Eric 22 October 2008 в 15:56
поделиться

1 ответ

Я должен был сделать это также и выглядел твердым и глубоким в том, мог ли DataGrid сделать это.

СУЩЕСТВУЕТ на самом деле соответствующий метод на классе DataGridColumnHeader, а именно, InvokeProcessSort, но это является внутренним и не появилось где-либо еще в классах DataGrid.

Все, что я смог сделать, является предварительным видом данные непосредственно перед тем, как я связываю его. Я использую пользовательский сбор данных, который реализует ICollectionView, а также ObservableCollection <>, и это работает хорошо - но это не оптимально, и загрузка работы, это не обязательно необходимо.

Кроме того, обеспечение предварительно отсортированного набора означает, что сетка не показывает маркер вида.

Я повышу это как проблему о средстве отслеживания ошибки DataGrid - это - довольно основной пропуск, который это было бы довольно легко зафиксировать - MS просто должен выставить соответствующие методы на классах DataGridColumn и DataGrid.

6
ответ дан 2 December 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: