Pandas 获取每一行的上下围栏
Pandas Getting Upper and Lower Fences For Each Rows
我的输入数据框是;
Grp A B C
Men 10 15 20
Women 15 10 25
Baby 5 10 20
Men 3 8 25
Men 7 5 30
Baby 5 2 8
Women 10 6 3
我怎样才能得到独特组的上下围栏?
期望的输出是;
GRP Upper_A Lower_A Upper_B Lower_B Upper_C Lower_C
Men
Women
Baby
你能帮我解决这个问题吗?
PS:上限值和下限值是盒须值。
使用:
new_df=( df.groupby('Grp').agg(Upper_A=('A','max'),Lower_A=('A','min'),
Upper_B=('B','max'),Lower_B=('B','min'),
Upper_C=('C','max'),Lower_C=('C','min'))
.reset_index() )
print(new_df)
Grp Upper_A Lower_A Upper_B Lower_B Upper_C Lower_C
0 Baby 5 5 10 2 20 8
1 Men 10 3 15 5 30 20
2 Women 15 10 10 6 25 3
您可以使用分组依据并展平索引
new_df = df.groupby("GRP").agg("min","max")
new_df.columns = [f"{c}_{a}" for c,a in new_def.columns]
使用 GroupBy.agg
with Series.quantile
,指定新的列名,然后按 f-string
s:
展平 MultiIndex
df = df.groupby('Grp').agg([('Upper', lambda x: x.quantile(.75)),
('Lower',lambda x: x.quantile(.25))])
df.columns = [f"{b}_{a}" for a,b in df.columns]
print (df)
Upper_A Lower_A Upper_B Lower_B Upper_C Lower_C
Grp
Baby 5.00 5.00 8.0 4.0 17.0 11.0
Men 8.50 5.00 11.5 6.5 27.5 22.5
Women 13.75 11.25 9.0 7.0 19.5 8.5
我的输入数据框是;
Grp A B C
Men 10 15 20
Women 15 10 25
Baby 5 10 20
Men 3 8 25
Men 7 5 30
Baby 5 2 8
Women 10 6 3
我怎样才能得到独特组的上下围栏?
期望的输出是;
GRP Upper_A Lower_A Upper_B Lower_B Upper_C Lower_C
Men
Women
Baby
你能帮我解决这个问题吗? PS:上限值和下限值是盒须值。
使用:
new_df=( df.groupby('Grp').agg(Upper_A=('A','max'),Lower_A=('A','min'),
Upper_B=('B','max'),Lower_B=('B','min'),
Upper_C=('C','max'),Lower_C=('C','min'))
.reset_index() )
print(new_df)
Grp Upper_A Lower_A Upper_B Lower_B Upper_C Lower_C
0 Baby 5 5 10 2 20 8
1 Men 10 3 15 5 30 20
2 Women 15 10 10 6 25 3
您可以使用分组依据并展平索引
new_df = df.groupby("GRP").agg("min","max")
new_df.columns = [f"{c}_{a}" for c,a in new_def.columns]
使用 GroupBy.agg
with Series.quantile
,指定新的列名,然后按 f-string
s:
df = df.groupby('Grp').agg([('Upper', lambda x: x.quantile(.75)),
('Lower',lambda x: x.quantile(.25))])
df.columns = [f"{b}_{a}" for a,b in df.columns]
print (df)
Upper_A Lower_A Upper_B Lower_B Upper_C Lower_C
Grp
Baby 5.00 5.00 8.0 4.0 17.0 11.0
Men 8.50 5.00 11.5 6.5 27.5 22.5
Women 13.75 11.25 9.0 7.0 19.5 8.5