我尝试在df中创建一个新的列'S',它与df的其他列一起计算,如下所示:
"E"+"I"-"D "/总和(" D ").尾部(7)/7
其中sum(D). tail(7)/7是"D"最后7个值的平均值
我试过:df['S'] = df.apply(lambda x: (x['E'] + x['I'] -x['D']) / (sum(x['D'].tail(7))/7) if sum(x['D'].tail(7)) != 0 else np.inf, axis = 1)
我用numpy代替panda是因为当我用panda的时候它给了我inf值。
我得到了:属性错误:"float"对象没有属性"tail"
1条答案
按热度按时间uklbhaso1#
您正在对 Dataframe 列的每一行/元素(
float
)应用函数,因此出现错误。IIUC你期望的输出,你可以使用
numpy.where
.下面,一个例子来展示你的 * 逻辑 *:输出: