python - 如何将 lambda 函数应用于 pandas 数据框中的某些行并创建新列

标签 python pandas

我有以下数据框: df1:

nameID  value1  Value2  Value3
name1   10      20      30
name2   15      25      35
name3   7       8       9
name4   5       6       7

我想创建一个新列 result,这样如果 nameID 位于 ['name1,'name3] 中,则 result = 值1 * 值2。否则,结果 = value1* value3。我想使用 lambda 函数。

nameID  value1  Value2  Value3  result
name1   10      20      30      200
name2   15      25      35      525
name3   7       8       9       56
name4   5       6       7       35

最佳答案

通过使用np.where

np.where(df['nameID'].isin(['name1','name3']),df1.value1*df1.Value2 ,df1.value1*df1.Value3)
Out[182]: array([200, 525,  56,  35], dtype=int64)

#df1['result'] = np.where(df['nameID'].isin(['name1','name3']),df1.value1*df1.Value2 ,df1.value1*df1.Value3)

关于python - 如何将 lambda 函数应用于 pandas 数据框中的某些行并创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51603892/

相关文章:

python - 从字节字符串创建 ipaddr-py IPv6Address

python - 在 Numpy 中交换行会产生一个嵌入式数组

python - Pandas 中的 bool 子集

python - 通过对自身执行计算从 1dim numpy 数组创建 numpy 矩阵?

python - 如何在 Pandas 的数据框子集中获得最大值?

python - 为什么您可以读取但不能修改全局值?

python - 如何使用 Pandas 分析来分析大型数据集?

python - pd.date_range 在月底返回起始值,然后继续每月日期?

python - 具有 NA 的两列的条件最小值

python - Tornado:来自 mysql 的更新数据未显示在由 Tornado 服务的前端中。重启服务器后才显示