python - DataFrame基于多列应用函数,也为多列设置值

标签 python pandas dataframe

我有如下数据框:

df = pd.DataFrame((np.random.randn(5,4)*10).astype(int), columns=list('abcd'))
def cal(a, b):
    if a + b > 5:
        return a+b, a-b

我如何将此函数应用于 df,cal 取的两个变量将是 df['a'] 和 ['b'],输出 a+b,a-b 将设置为 df['c'], df['d'].

循环 df 有效,但我如何使用 apply 或 applymap 来实现此目的(也许需要调整 cal)?

最佳答案

您可以使用掩码对其进行矢量化:

vals = pd.concat((df['a'] + df['b'], df['a'] - df['b']), axis=1).values
df[['c', 'd']].mask(df['a'] + df['b'] > 5, vals)
Out: 
    c   d
0   6   3
1 -12   3
2  12 -14
3  21 -31
4  15 -21

原始df在哪里

df
Out: 
   a   b   c   d
0  3  -2   6   3
1 -4  -8 -12   3
2 -1  13  10  -4
3 -5  26 -21  17
4 -3  18  14  19

关于python - DataFrame基于多列应用函数,也为多列设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45270632/

相关文章:

python - Pandas 分组并做总结

python - 在排序数据上拟合回归模型

python - pandas 数据框列中数据的字符串格式

python - 在单元测试中修补时,Celery 任务调用的函数没有调用?

python - 如何在 python 中访问这些 json 对象

Pythonic方式封装和实例化N个离散对象实例

python - 当 GroupBy 对象可能不包含某个键时如何避免 Pandas Groupby 键错误

python - Pandas - 拆分一行值并与多行合并

python - 为什么元组在保存到 csv 并重新加载数据框(pandas)后会变成字符串?

python - 我如何使用 Django session 来读取/设置 cookie?