python - Pandas dataframe - 基于简单计算创建新列

标签 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 大于 time_2,我希望列中包含 rating_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

关于python - Pandas dataframe - 基于简单计算创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40222181/

相关文章:

python - 使用 MinGW C 编译器代替 Microsoft Visual Studio Express for Python

python - 将行与数据帧 pandas 中的下一行合并

python - 将 pandas 数据帧转换为 JSON 文件

python - 将平均列添加到 Pandas 多索引数据框中

r - 使用OR使用dplyr过滤数据帧的更好方法?

python - 在 Python 中动态创建多个类

python - 无法在 Django 中分配用户

python - theano( python ): elementwise gradient

pandas - 按时间间隔内花费的最多时间标记行

r - 如何按 POSIXct 间隔复制行并将其传递到同一数据帧的顶部?