gpt4 book ai didi

python - 使用 Lambdas 的 Panda Dataframes 条件语句

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

我被困在一个简单的问题上。我正在尝试在 Panda 数据框中建立一个列,它只会拉高男性的年龄 (0),但由于某种原因我无法遍历数据框(它只会重复第一个结果,即 22)。

这是我的代码:

new_tab['menage'] = new_tab.Gender.apply(
lambda x: new_tab.iloc[:,1] if x==0
else 0)

Original Age Gender menage
0 22.0 0 22.0
1 38.0 1 0.0
2 26.0 1 0.0
3 35.0 1 0.0
4 35.0 0 22.0

我特别尝试为 lambda 执行此操作,同时认识到还有其他可用的替代方法。

我敢肯定这是一件非常简单的事情,但作为编码新手,目前我无法理解。

任何帮助都会很棒。

谢谢

最佳答案

您当前的操作不起作用,因为 new_tab.iloc[:,1] 每次 lambda 都被应用了> 被调用(而不是像您期望的那样以迭代方式)。但是,除了 apply 之外,还有更快的选项。

选项 1
掩码

v = df['Original Age'].mask(df['Gender'].astype(bool)).fillna(0)
v

0 22.0
1 0.0
2 0.0
3 0.0
4 35.0
Name: Original Age, dtype: float64

df['menage'] = v

选项 2
np.where

np.where(df['Gender'], 0, df['Original Age'])

0 22.0
1 0.0
2 0.0
3 0.0
4 35.0
Name: Original Age, dtype: float64

选项 3
使用 apply 的循环解决方案将涉及在整个 df 上调用 apply,因为您需要在 lambda 中访问多个列。

df.apply(lambda r: r['Original Age'] if r['Gender'] == 0 else 0, axis=1)

0 22.0
1 0.0
2 0.0
3 0.0
4 35.0
dtype: float64

关于python - 使用 Lambdas 的 Panda Dataframes 条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47890915/

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