簡體   English   中英

列值取決於另一列,條件為 pandas

[英]Column values which depends on another column with conditions in pandas

我有一個示例數據:

datetime             temperature   season
2021-04-10 01:00:00.    10.        Heating season
2021-04-10 01:00:00.    26.        Heating season
2021-07-10 01:00:00.    16.        Cooling season
2021-07-10 01:00:00.    30.        Cooling season

我想創建一個名為 new_temperature 的新列:a)如果溫度列小於 18 並且季節是采暖季節,那么 new_temperature 應該是 25,否則如果它的冷卻季節是 18。 b) 如果溫度列大於 25 並且季節是冷卻季節,則 new_temperature 列應為 18,否則如果其采暖季節為 22。

示例 output 如下所示:

datetime             temperature   season.         new_temperature
2021-04-10 01:00:00.    10.        Heating season.    25
2021-04-10 01:00:00.    26.        Heating season.    22
2021-07-10 01:00:00.    16.        Cooling season.    18
2021-07-10 01:00:00.    30.        Cooling season.    18

np.select有 4 個條件:

cond_1 = (df.temperature < 18) & (df.season == "Heating season")
cond_2 = (df.temperature < 18) & (df.season != "Heating season")
cond_3 = (df.temperature > 25) & (df.season == "Cooling season")
cond_4 = (df.temperature > 25) & (df.season != "Cooling season")

conditions = [cond_1, cond_2, cond_3, cond_4]
choices = [25, 18, 18, 22]

df["new_temperature"] = np.select(conditions, choices)

要得到

               datetime  temperature          season  new_temperature
0  2021-04-10 01:00:00.         10.0  Heating season               25
1  2021-04-10 01:00:00.         26.0  Heating season               22
2  2021-07-10 01:00:00.         16.0  Cooling season               18
3  2021-07-10 01:00:00.         30.0  Cooling season               18

注意:由於您的條件不是互斥的,您可能希望為np.select作為最后一個參數提供default值。 如果沒有條件匹配,它將被放入結果中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM