gpt4 book ai didi

python - Pandas 数据帧值和行条件都取决于其他列

转载 作者:行者123 更新时间:2023-12-04 07:49:57 24 4
gpt4 key购买 nike

我有一个 Pandas 数据框:

import pandas as pd

df = pd.DataFrame({'col1': ['a','a','b','b'],
'col2': [1,2,3,4],
'col3': [11,12,13,14]})
col1 col2 col3
0 a 1 11
1 a 2 12
2 b 3 13
3 b 4 14

如果 col1 中的值,我需要用行的 col2col3 值的某些函数替换 col2 b,但如果 col1 中的值不是 b,则保留行不变。假设函数是 col3 * exp(col2),然后将其应用于上面的 df 会产生

    col1   col2   col3
0 a 1 11
1 a 2 12
2 b 261.1 13
3 b 764.4 14

理想情况下,这将是矢量化的和就地的,因为我的真实 DataFrame 有几百万行。

这与 Stack Overflow 上的其他问题不同,因为它们只要求新值不依赖于其他列或一次更改所有行。谢谢。

编辑:更正了目标 DataFrame。已将函数从 exp(col2)+col3 更改为 exp(col2)*col3 而未更新示例中的值。

最佳答案

np.where 完成工作:

df.col2 = np.where(df.col1 == "b", df.col3 * np.exp(df.col2), df.col2)

它表示“对于每一行:如果 dfcol1 中有 'b',则从第二个参数(即col2col3 的函数);如果不是,则从第三个参数(即 col2 所以它保持原样)中获取值。 ”。以矢量化方式将其应用于每一行。

得到

  col1       col2  col3
0 a 1.00000 11
1 a 2.00000 12
2 b 261.11198 13
3 b 764.37410 14

关于python - Pandas 数据帧值和行条件都取决于其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67034981/

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