我有一个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
我该如何实现?
答案 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)