Python Pandas - 比较特定行并合并

Python Pandas - Compare specific rows and combine

我有以下数据集:

Group   LowerTier    UpperTier   Value
  1         0           99         0    
  1         100         199        0
  1         200         299        10
  1         300         1000       20 
  2         0           249        0
  2         250         1000       5
(...)

我想要 Python 和 pandas 的内容如下:

Group   LowerTier    UpperTier   Value
  1         0           199         0    
  1         200         299        10
  1         300         1000       20 
  2         0           249        0
  2         250         1000       5

换句话说:我想合并一个组中具有相同值的所有行,条件是我得到 LowerTier 的最小值和 UpperTier 的最大值作为双精度值(例如组 1;值 = 0 ).

我怎样才能得到这些table?

提前致谢

你试过 groupbyaggregate 了吗?

df.groupby(['Group','Value'],as_index=False).agg({'LowerTier':min,'UpperTier':max})

首先创建数据框:

df = pd.DataFrame({'Group':[1,1,1,1,2,2],'LowerTier':[0,100,200,300,0,250],'UpperTier':[99,199,299,1000,249,1000],'Value':[0,0,10,20,0,5]})

然后应用 groupbyagg:

df.groupby(['Group','Value'],as_index=False).agg({'LowerTier':min,'UpperTier':max})

输出:

    Group   Value   UpperTier   LowerTier
0   1       0       199         0
1   1       10      299         200
2   1       20      1000        300
3   2       0       249         0
4   2       5       1000        250