Python Pandas - 比较特定行和组合

时间:2016-07-05 09:40:48

标签: python pandas rows

我有以下数据集:

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

在单词中:我想组合一组中具有相同Value值的所有行,条件是我得到LowerTier的min和最大的UpperTier作为double值(例如Group 1; value = 0)。

我怎样才能得到这些表?

提前致谢

1 个答案:

答案 0 :(得分:3)

您是否使用groupby尝试了aggregate

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]})

然后将groupby应用于agg

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