根据另一列的百分位值在 [=10th=] 数据框中创建一个布尔列
Create a boolean column in pandas datafame based on percentile values of another column
我有一个包含多列的数据框。我想创建布尔列,标记值是否属于第 90 个百分位数及以上。
我的数据框也包含多个零。
示例:
Name Value
Val1 1000
Val2 910
Val3 800
Val4 700
Val5 600
Val6 500
Val7 400
Val8 300
Val9 200
Val10 100
Val11 0
预期输出
Name Value 90thper
Val1 1000 1
Val2 910 1
Val3 800 0
Val4 700 0
Val5 600 0
Val6 500 0
Val7 400 0
Val8 300 0
Val9 200 0
Val10 100 0
Val11 0 0
您可以使用 pd.Series.quantile
找到第 90 个百分位值并包括高于它的所有值。
val = df['Value'].quantile(.9, interpolation="lower") # val -> 910
df['90thper'] = df['Value'].ge(val).astype(int)
# Name Value 90thper
# 0 Val1 1000 1
# 1 Val2 910 1
# 2 Val3 800 0
# 3 Val4 700 0
# 4 Val5 600 0
# 5 Val6 500 0
# 6 Val7 400 0
# 7 Val8 300 0
# 8 Val9 200 0
# 9 Val10 100 0
假设您的数据框名为 df
。你可以这样做:
df['90thper'] = (df['Value'] >= df['Value'].quantile(0.90)).apply(lambda x: int(x))
尝试quantile
df['new'] = df.Value.ge(df.Value.quantile(0.9)).astype(int)
df
Name Value new
0 Val1 1000 1
1 Val2 910 1
2 Val3 800 0
3 Val4 700 0
4 Val5 600 0
5 Val6 500 0
6 Val7 400 0
7 Val8 300 0
8 Val9 200 0
9 Val10 100 0
10 Val11 0 0
我有一个包含多列的数据框。我想创建布尔列,标记值是否属于第 90 个百分位数及以上。
我的数据框也包含多个零。
示例:
Name Value
Val1 1000
Val2 910
Val3 800
Val4 700
Val5 600
Val6 500
Val7 400
Val8 300
Val9 200
Val10 100
Val11 0
预期输出
Name Value 90thper
Val1 1000 1
Val2 910 1
Val3 800 0
Val4 700 0
Val5 600 0
Val6 500 0
Val7 400 0
Val8 300 0
Val9 200 0
Val10 100 0
Val11 0 0
您可以使用 pd.Series.quantile
找到第 90 个百分位值并包括高于它的所有值。
val = df['Value'].quantile(.9, interpolation="lower") # val -> 910
df['90thper'] = df['Value'].ge(val).astype(int)
# Name Value 90thper
# 0 Val1 1000 1
# 1 Val2 910 1
# 2 Val3 800 0
# 3 Val4 700 0
# 4 Val5 600 0
# 5 Val6 500 0
# 6 Val7 400 0
# 7 Val8 300 0
# 8 Val9 200 0
# 9 Val10 100 0
假设您的数据框名为 df
。你可以这样做:
df['90thper'] = (df['Value'] >= df['Value'].quantile(0.90)).apply(lambda x: int(x))
尝试quantile
df['new'] = df.Value.ge(df.Value.quantile(0.9)).astype(int)
df
Name Value new
0 Val1 1000 1
1 Val2 910 1
2 Val3 800 0
3 Val4 700 0
4 Val5 600 0
5 Val6 500 0
6 Val7 400 0
7 Val8 300 0
8 Val9 200 0
9 Val10 100 0
10 Val11 0 0