我有以下数据框
df = pd.DataFrame({'A':[74.75, 91.71, 145.66], 'B':[4, 3, 3], 'C':[25.34, 33.52, 54.70]})
A B C
0 74.75 4 25.34
1 91.71 3 33.52
2 145.66 3 54.70
我想创建另一个列df ['D'],它可以是前3列中的列表或系列,适合在另一列中使用np.irr函数,如下所示
D
0 [ -74.75, 2.34, 25.34, 25.34, 25.34]
1 [ -91.71, 33.52, 33.52, 33.52]
2 [-145.66, 54.70, 54.70, 54.70]
所以我最终可以做这样的事情
df['E'] = np.irr(df['D'])
我确实得到了这个
[-df.A[0]]+[df.C[0]]*df.B[0]
但它并不存在。
答案 0 :(得分:0)
您真的需要专栏'D'
吗?
顺便说一下,您可以轻松地将其添加为:
df['D'] = [[-df.A[i]]+[df.C[i]]*df.B[i] for i in xrange(len(df))]
df['E'] = df['D'].map(np.irr)
如果您不需要,可以直接设置E
df['E'] = [np.irr([-df.A[i]]+[df.C[i]]*df.B[i]) for i in xrange(len(df))]
或:
df['E'] = df.apply(lambda x: np.irr([-x.A] + [x.C] * x.B), axis=1)