【发布时间】:2026-01-29 23:55:02
【问题描述】:
我正在尝试通过调用df.groupby('index_column').max() 和df.groupby('index_column').min() 从这个更大的DataFrame 中创建更小的DataFrame,其中index_column 是df 的列,我现在希望它成为新Min 的索引和最大数据帧。在这些 Min 和 Max DataFrames 中,我只想有 2 个简单的列,一个索引列,另一列分别只包含 Max 和 Min 值。
将我上面所说的所有内容放在上下文中,我将使用我所做的示例:
主 DataFrame df 在标准输出中如下所示:
In [3]: df
Out[3]:
name parameter cycles \
0 dfmul [["scheduler_type", "sdc"], ["max_chain_delay"... 159
1 dfdiv [["scheduler_type", "sdc"], ["max_chain_delay"... 1335
2 mpeg2 [["scheduler_type", "sdc"], ["max_chain_delay"... 1992
3 aes [["scheduler_type", "sdc"], ["max_chain_delay"... 5441
4 mips [["scheduler_type", "sdc"], ["max_chain_delay"... 4263
5 dfadd [["scheduler_type", "sdc"], ["max_chain_delay"... 455
6 dfsin [["scheduler_type", "sdc"], ["max_chain_delay"... 39589
.. ... ... ...
403 adpcm [["scheduler_type", "sdc"], ["max_chain_delay"... 23355
404 dfadd [["scheduler_type", "sdc"], ["max_chain_delay"... 599
405 sha [["scheduler_type", "sdc"], ["max_chain_delay"... 348417
406 blowfish [["scheduler_type", "sdc"], ["max_chain_delay"... 251877
407 jpeg [["scheduler_type", "sdc"], ["max_chain_delay"... 766742
mem_cycles build_number
0 None 1300
1 None 1300
2 None 1300
3 None 1300
4 None 1300
.. ... ...
401 None 1344
402 None 1344
403 None 1344
404 None 1344
405 None 1344
406 None 1344
407 None 1344
[408 rows x 5 columns]
In [4]:
当我在groupby('build_number') 之后调用max() 和min() 方法时,我得到以下DataFrame,其中包含与df 中存在的相同列,如您所见:
In [5]: df.groupby('build_number').max()
Out[5]:
name parameter cycles \
build_number
1300 sha [["scheduler_type", "sdc"], ["max_chain_delay"... 348417
1301 sha [["scheduler_type", "sdc"], ["max_chain_delay"... 348417
1302 sha [["scheduler_type", "sdc"], ["max_chain_delay"... 348417
# And it continues so on, won't list the whole frame
mem_cycles
build_number
1300 NaN
1301 NaN
1302 NaN
# And it continues so on, won't list the whole frame
In [6]:
min() 也是如此。
但是,我想要返回的只是一个 DataFrame,它只有 build_number 作为索引列,cycles 作为它只有非索引列。事实上,如果我改为调用 mean() groupby 方法,就会得到这种所需的输出格式。
In [6]: df.groupby('build_number').mean()
Out[6]:
cycles
build_number
1300 42966.500000
1301 42992.000000
1302 42989.900000
1303 42985.300000
# And it continues so on, won't list the whole frame
In [7]:
所以我的问题是:
当我调用
min()和max()时,如何让我的输出成为我想要的输出(这是调用mean()时的格式)?为什么当我调用
mean()时,生成的 DataFrame 已经消除了所有其他非数字列,但min()和max()没有消除那些其他非数字列?
非常感谢您的帮助!
【问题讨论】:
标签: python pandas group-by ipython dataframe