如何基于值的存在创建熊猫DataFrame列

时间:2018-10-11 09:42:23

标签: pandas

我有一个Pandas DataFrame,如下所示:

import pandas as pd
aw = pd.DataFrame(data=[[1,2,3],[4,5,6],[7,8,9]],
columns=['A','B','C'])

print(aw)
>>>
   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9

我想基于列C的值创建列D

如果“值”位于前20%,则将Das设置为0.04

如果“值”位于前40%且小于前20%,则将D的值设置为0.03

如果“值”位于前60%且小于前20%,则将D的值设置为0.02

我该如何实现?

1 个答案:

答案 0 :(得分:0)

尝试一下

def percentile(x):
if x>df.C.quantile(0.8):
    return 0.04
elif x>df.C.quantile(0.6) and x<= df.C.quantile(0.8):
    return 0.03
elif x>df.C.quantile(0.4) and x<= df.C.quantile(0.6):
    return 0.02
else:
    return None

df['D'] = df['C'].apply(percentile)

就像Mayank Porwal建议的那样,您可以将df.C.quantile(0.8)替换为numpy.percentile(df.C, 80)