gpt4 book ai didi

python - Pandas DF 在同一计算中两次引用同一切片

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:22 25 4
gpt4 key购买 nike

我有一个巨大的数据集需要处理,我正在尝试优化最昂贵的生产线,处理明智。

我使用具有 3 列 A、B 和 C 的 df。我有 2 个值,a 和 b,用于更新 df 子集中 C 的值。

在继续之前,让我定义一个文本替换以提高可读性:

filter(_X) -> df.loc[df['A'] < a, _X]

每次我输入“filter”时,请用右侧的文本替换它(应用正确的参数代替参数 _X - 想想 C/C++ 宏)。有问题的代码行是:

filter('C') += a * np.minimum(filter('B'), b)

我不确定的是,Python 在计算表达式时是否会处理“过滤器”两次,或者它是否会使用“引用”(a-la C++)并且只执行一次。在前一种情况下,有没有办法让我重写表达式以避免“filter”代码的双重执行?

此外,如果您对如何重写“过滤器”本身有建议,我很乐意测试它们。

编辑:代码的扩展版本:

df.loc[df['A'] < a, 'C'] += a * np.minimum(df.loc[df['A'] < a, 'B'], b)

最佳答案

如果我理解正确的话,您可能不需要在 += 之后“过滤两次” 。请参阅下面的示例:

np.random.seed(5)
df = pd.DataFrame(np.random.randint(0,100,size=(4, 4)), columns=list('ABCD'))


A B C D
0 99 78 61 16
1 73 8 62 27
2 30 80 7 76
3 15 53 80 27

现在,如果您想添加列 C 的最小值的值和D更改为 B 的当前值那就是:df.loc[df['A'] < 80, 'B'] += np.minimum(df['C'], df['D'])

    A    B      C   D
0 99 78.0 61 16
1 73 35.0 62 27 #<--- meets condition 8+27=35
2 30 87.0 7 76 #<--- meets condition 80+7=87
3 15 80.0 80 27 #<--- meets condition 53+27=80

注意 A 时如何< 80.B值随着 C 中的任何一个值而变化或D较小。需要注意的一件事是 B变成漂浮物。不知道为什么。

关于python - Pandas DF 在同一计算中两次引用同一切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48935200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com