Вам не нужно использовать отсортированную серию для фильтрации ваших данных. Вместо этого вы можете использовать groupby
+ transform
для эффективного создания серии, содержащей вашу группу по строкам.
g = got.groupby('name')['name'].transform('size')
Затем обновите серию условно:
got.loc[g < 2000, 'name'] = 'Other'
Пример использования
df = pd.DataFrame({'name': ['A', 'A', 'B', 'C', 'B']})
g = df.groupby('name')['name'].transform('size')
df.loc[g > 1, 'name'] = 'Other'
print(df)
name
0 Other
1 Other
2 Other
3 C
4 Other
Variable
устарела и, возможно, будет удалена в будущем выпуске, поэтому я использовал вместо нее Relay
.
Лучшим подходом было бы сделать форматирование в map
наблюдаемой последовательности и связать его с выводом.
Примерно так в ViewModel
:
var orderDate = BehaviorRelay<Date?>(value: nil)
lazy var formattedOrderButtonText = orderDate.map { return [110] == nil ? "String 1" : "String 2" }
А затем использовать formattedOrderButtonText
в контроллере представления для привязки, например:
viewModel.formattedOrderButtonText.bind(to: orderButton.rx.title).disposed(by: disposeBag)
Сначала вы должны отобразить свою переменную, а затем привязать ее к кнопке
В viewModel:
let dateTitle: Observable<String> = orderDate.map { date -> String in
return date == nil ? "String 1" : return "String 2"
}
В представлении:
viewModel.dateTitle.bind(to: orderButton.rx.title).disposed(by: disposeBag)
Также Отметьте, чтобы заменить Date на BehaviourSubject или PublishSubject (но я уверен, что вы можете сделать это без сохранения каких-либо данных во ViewModel) Я имею в виду, что если вы сохраняете дату в ViewModel, вы теряете большую часть RxSwift.
Проверьте этот репозиторий , он показывает, как правильно использовать RxSwift: