我想根据数据框中的4列进行计算,并将结果应用于新列。
我感兴趣的4栏如下:
rating_1, time_1, rating_2, time_2 col_x col_y etc
0 1 1 1 1 1 1
如果time_1大于time_2,我想在新列中使用rating_1,如果time_2更大,我希望列中的rating_2。
最简单的方法是什么?
答案 0 :(得分:2)
您可以使用numpy.where()方法:
In [241]: x
Out[241]:
rating_1 time_1 rating_2 time_2 col_x col_y
0 11 1 21 1 1 1
1 12 2 21 1 1 1
2 13 1 21 5 1 1
3 14 5 21 5 1 1
In [242]: x['new'] = np.where(x.time_1 > x.time_2, x.rating_1, x.rating_2)
In [243]: x
Out[243]:
rating_1 time_1 rating_2 time_2 col_x col_y new
0 11 1 21 1 1 1 21
1 12 2 21 1 1 1 12
2 13 1 21 5 1 1 21
3 14 5 21 5 1 1 21
答案 1 :(得分:1)
def myfunc(row):
if row.time_1 >= row.time_2:
return row.rating_1
else:
return row.rating_2
df.loc[:, 'calculatedColumn'] = df.apply(myfunc, axis = 1)