首页 > 解决方案 > 添加分组的最大值 - 最小值列?

问题描述

我是 pandas 的新手,并且在尝试不同的方法来实现这一点。

例如,我感兴趣的数据有 label 和 elapsed_duration_ms 列

turn_data.loc[:, ['label', 'elapsed_duration_ms']].head()
                    label  elapsed_duration_ms
601  1:21.46 Lap 13  *PoB                60100
602  1:21.46 Lap 13  *PoB                60200
603  1:21.46 Lap 13  *PoB                60300
604  1:21.46 Lap 13  *PoB                60400
605  1:21.46 Lap 13  *PoB                60500

我想找到“elapsed_duration_ms”的最大值和最小值之间的差异,我可以通过像这样在标签上分组来获得

grouped = turn_data.groupby('label')
elapsed_time_data = (
    grouped['elapsed_duration_ms'].max() -
    grouped['elapsed_duration_ms'].min())
elapsed_time_data
label
1:21.46 Lap 13  *PoB    13700
1:22.11 Lap 14          13800
1:22.16 Lap 8           13800
1:22.17 Lap 2           13700
Name: elapsed_duration_ms, dtype: int64

我不确定从这里做什么。我的最终目标是创建每个标签的最大最小值的条形图。我的假设是我想添加一个新的 max-min 列?

标签: pandas

解决方案


import pandas as pd
df = pd.DataFrame({'A': ['a', 'a', 'a', 'b', 'b', 'b'],
                   'B': [1, 2, 3, 400, 500, 600]})

返回:

    A   B
0   a   1
1   a   2
2   a   3
3   b   400
4   b   500
5   b   600

然后:

df.groupby('A').agg(lambda x: max(x) - min(x)).reset_index()

返回:


    A   B
0   a   2
1   b   200

推荐阅读