Python pandas使用聚合创建条件列

时间:2018-01-29 22:47:43

标签: python pandas dataframe

我正在尝试创建一个返回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')

任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

我不能在repl中做到这一点,但这可能适合你

.loc

这是使用DataFrame来查找满足mask变量中定义的逻辑的~子集。 df['pe_cond'] = (df['P/E'] <= df['P/E'].quantile(0.1)).astype(int) (一元)运算符否定了这一点。基本上,在条件为真的情况下给它一个1.如果条件为假,则给它一个0。

- 编辑 - 你应该完全使用@ djk47463评论。它非常简洁。

/landscape