gpt4 book ai didi

python - 基于两列值相等 Pandas 将列中的字段设置为 0

转载 作者:太空宇宙 更新时间:2023-11-04 04:00:07 25 4
gpt4 key购买 nike

我有一个使用 pandas 的 df,带有一个许可列表,然后是一个子许可列表。我需要比较 Parent 和 Sub Permit 列,如果 Parent Permit 等于 sub permit,则将 Value total 字段设置为 0。BLD-00045 行本质上需要保留 70000 值,但 ELE 和 PM 需要设置为 0。这可能吗?

Parent Permit    Sub Permit    Value Total
BLD-00045 NaN 70000
ELE-2019 BLD-00045 100
PLM-2019 BLD-00045 200

我想要的输出是这样的

Parent Permit    Sub Permit    Value Total
BLD-00045 NaN 70000
ELE-2019 BLD-00045 0
PLM-2019 BLD-00045 0

最佳答案

从您的数据的字里行间来看,我猜测在现实中存在某种等级的、树状的许可证结构,并且您有兴趣仅将成本分配到某些级别。

根据您的示例,您似乎想要识别子许可等于任何父许可的行。

你可能想尝试这样的事情:

parent_permits = df['Parent Permit'].unique()
has_sub_permit = df['Sub Permit'].isin(parent_permits)
df.loc[has_sub_permit, 'Value Total'] = 0

两个效率笔记:

  • 如果您需要反复检查此条件,您可以考虑向数据框添加“有父项”列。
  • 如果许可类型本质上是分类的,您可以考虑使用 pandas 的 Categorical datatype对于那些列。然后,Pandas 将使用整数存储值,这可能会加快操作速度。

关于python - 基于两列值相等 Pandas 将列中的字段设置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58546991/

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