gpt4 book ai didi

python - 检查python中df中每一列值的每一行

转载 作者:行者123 更新时间:2023-12-01 21:45:25 25 4
gpt4 key购买 nike

我是 Pandas 数据框的新手。所以,我需要帮助我有一个如下所示的 df:

  Location      A      B      C      D
0 X GREEN RED GREEN AMBER
1 Y GREEN RED RED RED
2 Z GREEN GREEN GREEN GREEN
3 R GREEN GREEN GREEN GREEN

我想要数据框中每一行和每一列的状态列。状态列基于 A、B、C 和 D 列。如果一行中的任何列值是红色,则状态为红色。否则,如果任何列值为琥珀色,则状态为琥珀色,否则为绿色。

对于每一列,当该列中的任何值是红色时,输出将是红色的。否则,如果任何列值是琥珀色,则值是琥珀色。否则列值将为绿色。

输出应该是这样的

  Location      A      B      C      D  Status
0 X GREEN RED GREEN AMBER RED
1 Y GREEN RED RED RED RED
2 Z GREEN GREEN GREEN GREEN AMBER
3 R GREEN GREEN GREEN GREEN GREEN
GREEN RED RED RED

最佳答案

想法是创建优先值列表,通过 DataFrame.stack reshape 值,转换为分类,排序并按 GroupBy.first 获取第一个值:

priority = ['RED','AMBER','GREEN']
c = ['A','B','C','D']
s = df[c].stack()

cats = pd.Categorical(s, ordered=True, categories=priority)
df['Status'] = pd.Series(cats, index=s.index).sort_values().groupby(level=0).first()
print (df)
Location A B C D Status
0 X GREEN RED GREEN AMBER RED
1 Y GREEN RED RED RED RED
2 Z GREEN AMBER GREEN GREEN AMBER
3 R GREEN GREEN GREEN GREEN GREEN

关于python - 检查python中df中每一列值的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60801282/

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