我有以下数据集:
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)。
我怎样才能得到这些表?
提前致谢
答案 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