gpt4 book ai didi

python - Pandas 检查列值是否在其他列值之间的范围内

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

我是新手,我确信有一种我不知道的简单方法可以做到这一点,在此先感谢您的帮助。

我获得了过去 10 年中一年中每一天最高和最低销售团队绩效的历史最小和最大销售数字。我在 2016 年也有同样的事情(下面的示例数据)。

              hist_min  hist_max   2016_min  2016_max
Day_of_Year
1 1000 10000 898 9000
2 234 896 300 1000
3 1254 23666 1000 24000
4 930 78999 1000 1050
5 278 74588 300 5000

最终目标是在 matplotlib 中绘制此数据,但我只想从 2016_min 列中获取低于 hist_min 中的值的值,同样只有 2016_max 列的值大于 hist_max 列.数据看起来像这样:

              hist_min  hist_max   2016_min  2016_max
Day_of_Year
1 1000 10000 898 NULL
2 234 896 NULL 1000
3 1254 23666 1000 24000
4 930 78999 NULL NULL
5 278 74588 NULL NULL

我在其中放了“NULL”来表示空值,Nan 可能更好,但我不知道 matplot lib 是否可以处理“Nan”数字……这是下一步,所以我会找出答案很快。

预先感谢您的帮助,我

最佳答案

使用mask带有返回 NaNNULLNone if True 的 bool 掩码:

print (df['2016_min'] > df['hist_min'])
Day_of_Year
1 False
2 True
3 False
4 True
5 True
dtype: bool

df['2016_min'] = df['2016_min'].mask(df['2016_min'] > df['hist_min'])
df['2016_max'] = df['2016_max'].mask(df['2016_max'] < df['hist_max'])
print (df)
hist_min hist_max 2016_min 2016_max
Day_of_Year
1 1000 10000 898.0 NaN
2 234 896 NaN 1000.0
3 1254 23666 1000.0 24000.0
4 930 78999 NaN NaN
5 278 74588 NaN NaN

df['2016_min'] = df['2016_min'].mask(df['2016_min'] > df['hist_min'], 'NULL')
df['2016_max'] = df['2016_max'].mask(df['2016_max'] < df['hist_max'], 'NULL')
print (df)
hist_min hist_max 2016_min 2016_max
Day_of_Year
1 1000 10000 898 NULL
2 234 896 NULL 1000
3 1254 23666 1000 24000
4 930 78999 NULL NULL
5 278 74588 NULL NULL

df['2016_min'] = df['2016_min'].mask(df['2016_min'] > df['hist_min'], None)
df['2016_max'] = df['2016_max'].mask(df['2016_max'] < df['hist_max'], None)
print (df)
hist_min hist_max 2016_min 2016_max
Day_of_Year
1 1000 10000 898 None
2 234 896 None 1000
3 1254 23666 1000 24000
4 930 78999 None None
5 278 74588 None None

关于python - Pandas 检查列值是否在其他列值之间的范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44133008/

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