Pandas数据框 - 基于简单的计算创建新列

时间:2016-10-24 15:30:47

标签: python pandas dataframe

我想根据数据框中的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。

最简单的方法是什么?

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)