我正在尝试创建一个返回True的列,如果P / E在我的数据框中的所有P / E的下四分位数中。以下是我到目前为止所做的工作。
首先我定义了一个函数:
def pe_cond(df):
if df['P/E'] <= df['P/E'].quantile(0.1):
return 1
else:
return 0
其次,我试图将它应用到我的数据框
df['pe_cond'] = df.apply(pe_cond, axis=1)
但是我收到以下错误:
AttributeError: ("'float' object has no attribute 'quantile'", u'occurred at index 0')
任何帮助将不胜感激。
由于
答案 0 :(得分:0)
我不能在repl中做到这一点,但这可能适合你
.loc
这是使用DataFrame
来查找满足mask
变量中定义的逻辑的~
子集。 df['pe_cond'] = (df['P/E'] <= df['P/E'].quantile(0.1)).astype(int)
(一元)运算符否定了这一点。基本上,在条件为真的情况下给它一个1.如果条件为假,则给它一个0。
- 编辑 - 你应该完全使用@ djk47463评论。它非常简洁。
/landscape