pandas 根据另一个储存格,将函数套用至列中的每个储存格

pwuypxnk  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(119)

例如,我有以下内容:
| 。|一种|B|基准测试|
| - -|- -|- -|- -|
| 第0页|一个|2个|一个|
| 一个|一个|五个|三个|
并且我想在Pandas中对每一列应用如下条件:

def f(x):
  if x > benchmark:
    # X being the values of a or b
    return x
  else:
    return 0

但是我不知道怎么做。如果我做df.apply(f),我不能访问行中的其他单元格,因为x只是一个单元格的值。
我也不想创建新列。我想在与基准比较时直接更改单元格的值,清除不符合基准的单元格或将其置0。
有什么见解吗?

h79rfbju

h79rfbju1#

您不需要函数,而是使用向量运算:

out = df.where(df.gt(df['benchmark'], axis=0), 0)

若要就地变更值:

df[df.le(df['benchmark'], axis=0)] = 0

输出量:

a  b  benchmark
0  0  2          0
1  0  5          0

如果不想影响benchmark

m = df.le(df['benchmark'], axis=0)
m['benchmark'] = False

df[m] = 0

输出量:

a  b  benchmark
0  0  2          1
1  0  5          3

相关问题