python - 比较多个行值并根据大于/小于分配一个数字
问题描述
所以我有一个海面温度异常('ssta')的大熊猫数据框,每个月('Month',1-12)都有第 90 和第 10 个百分位数('90th','10th')的唯一值. 下面是一个例子:
monlth_data
lat lon time Month ssta 90th 10th
0 24.125 262.375 1982-01-01 1 -0.953852 1.566498 -1.620501
1 24.125 262.375 1982-01-02 1 -0.403852 1.566498 -1.620501
2 24.125 262.375 1982-01-03 1 -0.083853 1.566498 -1.620501
3 24.125 262.375 1982-01-04 1 -0.243853 1.566498 -1.620501
4 24.125 262.375 1982-01-05 1 -0.213852 1.566498 -1.620501
... ... ... ... ... ... ... ...
7798309 30.375 273.875 2020-12-27 12 -0.139111 1.382500 -1.377530
我需要在数据框中创建一个新列(称为“阈值”),该列将基于第 90 个和第 10 个值...。如果 ssta >= 第 90 个,此新列应包含“+1”,“ -1' 如果它 <= 第 10 个,或者 0 如果介于两者之间(既不是 -1/+1)。这是一个示例:
monthly_threshold
lat lon time Month ssta 90th 10th threshold
0 24.125 262.375 1982-01-01 1 0.000000 1.566498 -1.620501 0
1 24.125 262.375 1982-01-01 1 -2.00000 1.566498 -1.620501 -1
2 24.125 262.375 1982-01-01 1 2.000000 1.566498 -1.620501 +1
我让它在另一个数据框上工作,但我只工作了一个月,所以很容易将所有“ssta”列值与相同的百分位值进行比较。现在它有点复杂,因为有多个月份,因此有多个百分位值。不确定这是否会受益于 for 循环或某种类型的 if 语句(我对此感到生疏)。任何见解将不胜感激!
下面我将展示我所做的工作,但同样是基于一个月(六月):
SSTA_df_copy['threshold'] = ''
SSTA_df_copy.loc[SSTA_df_copy.SSTA <= SSTA_df_copy.SSTA.quantile(.1), 'threshold'] = -1
SSTA_df_copy.loc[(SSTA_df_copy.SSTA > SSTA_df_copy.SSTA.quantile(.1)) & (SSTA_df_copy.SSTA < SSTA_df_copy.SSTA.quantile(.9)), 'threshold'] = 0
SSTA_df_copy.loc[SSTA_df_copy.SSTA >= SSTA_df_copy.SSTA.quantile(.9), 'threshold'] = 1
lat lon time day SSTA threshold year
604607 28.625 274.625 2002-06-30 30 -1.463335 -1 2002
89967 28.625 267.375 2013-06-30 30 0.946152 0 2013
解决方案
推荐阅读
- java - 如何在不使用管理外部存储权限的情况下在 android 11 范围存储中获取我的手机存储中可用的所有 pdf 文件
- python - pandas df.to_sql 到 Oracle 数据库数据类型不一致
- python - 同时比较一个列表和另外两个列表
- typescript - 为什么 TypeScript 在分配给新的空数组时不暗示数组类型?
- python - 为什么我的 textBrowser 在显示字符串时会换行
- python - TypeError: dict object is not callable (inside Thread function)
- c# - 请求的资源不支持 http 方法 'GET' 但使用 'POST'
- c++ - 在介子中启用统一构建会导致 vulkan-memory-allocator 不链接
- c# - 如何快速执行 (a * b) % c,其中 a,b,c 是 ulong,通常相当大
- javascript - 如何更改自定义 SVG 图标颜色以与 Materiel-UI 中的主题提供程序兼容?