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?
提前致谢
你试过 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
我有以下数据集:
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?
提前致谢
你试过 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