小编Kei*_*h A的帖子

为什么 Flutter 会在选项卡式界面中处理我的小部件状态对象?

我有一个选项卡式 Flutter 界面,使用 DefaultTabController 和 3 个页面,每个页面都是一个有状态的小部件。我似乎能够在前两个选项卡之间切换就好了,但是当我切换到第 3 页时,第一页的状态对象被处理掉了。随后的状态更新(使用 setState())然后失败。

我已经覆盖了第一页状态对象的 dispose() 方法,以便它在处理时打印一条消息。我一点击第三个标签,它就会被处理掉。我找不到有关 Flutter 为什么处理状态对象的文档。(生命周期有很多,但不是通过各个阶段的原因。)

我不认为设置标签没有什么不寻常的地方。

 @override
  Widget build(BuildContext context) {
    return new MaterialApp(

      home: DefaultTabController(
        length: 3,
        child: Scaffold(
          appBar: AppBar(
            title: Text(title),
            bottom: TabBar(
              tabs: [
                // Use these 3 icons on the tab bar.
                Tab(icon: Icon(Icons.tune)),
                Tab(icon: Icon(Icons.access_time)),
                Tab(icon: Icon(Icons.settings)),
              ],
            ),
          ),
          body: TabBarView(
            children: [
              // These are the 3 pages relating to to the tabs.
              ToolPage(),
              TimerPage(),
              SettingsPage(),
            ],
Run Code Online (Sandbox Code Playgroud)

页面本身非常简单。没有动画。只是开关和滑块等。我认为我从我所看到的代码示例中所做的唯一偏离是,我使主应用程序小部件有状态,我扩展了标签页以支持 wantKeepAlive() 和我覆盖了 wantKeepAlive 以将其设置为 …

tabs dispose flutter

6
推荐指数
1
解决办法
2463
查看次数

Python Pandas Dataframe idxmax 太慢了。备择方案?

我正在尝试使用df.loc[df.groupby(keys)['column'].idxmax()].

然而,我发现df.groupby(keys)['column'].idxmax()在我大约 2700 万行的数据集上需要很长时间。有趣的是,df.groupby(keys)['column'].max()在我的数据集上运行只需要 13 秒,而运行df.groupby(keys)['column'].idxmax()需要 55 分钟。我不明白为什么返回行的索引比从行返回值需要 250 倍的时间。也许我可以做些什么来加速 idxmax?

如果没有,是否有另一种方法可以比使用 idxmax 更快地按最大值从组中选择行?

有关其他信息,我使用两个键并在 groupby 和 idxmax 操作之前对这些键上的数据帧进行排序。这是 Jupyter Notebook 中的样子:

import pandas as pd

df = pd.read_csv('/data/Broadband Data/fbd_us_without_satellite_jun2019_v1.csv', encoding='ANSI', \
    usecols=['BlockCode', 'HocoNum', 'HocoFinal', 'TechCode', 'Consumer', 'MaxAdDown', 'MaxAdUp'])
Run Code Online (Sandbox Code Playgroud)
%%time
df = df[df.Consumer == 1]
df.sort_values(['BlockCode', 'HocoNum'], inplace=True)
print(df)
Run Code Online (Sandbox Code Playgroud)
              HocoNum                  HocoFinal        BlockCode  TechCode
    4631064    130077                  AT&T Inc.   10010201001000        10   
    4679561    130077                  AT&T Inc.   10010201001000        11   
    28163032   130235     Charter Communications   10010201001000        43   
    11134756 …
Run Code Online (Sandbox Code Playgroud)

python max dataframe pandas

2
推荐指数
1
解决办法
310
查看次数

标签 统计

dataframe ×1

dispose ×1

flutter ×1

max ×1

pandas ×1

python ×1

tabs ×1