簡體   English   中英

根據條件和年份標記 NaN 值

[英]Flagging NaN values based on a condition and year

我試圖獲得根據條件和特定年份標記 NaN 值的要求,下面是我的代碼:

import pandas as pd
import numpy as np
s={'Fruits':['Apple','Orange', 'Banana', 'Mango'],'month':['201401','201502','201603','201604'],'weight':[2,4,1,6],'Quant':[251,178,298,300]}
p=pd.DataFrame(data=s)
upper = 250

如果upper>250 ,我將如何標記月201603201604 (03 和 04 是月份)的 NaN 值。 基本上我的意圖是檢查Quant值是否大於定義的upper限值,但針對特定日期,即 201603 和 201604。

這就是 output 的樣子——

Fruits  month   weight  Quant
0   Apple   201401  2   251.0
1   Orange  201502  4   178.0
2   Banana  201603  1   NaN
3   Mango   201604  6   NaN

您可以構建一個 boolean 條件來檢查“Quant”是否大於“upper”並且月份是“03”或“04”,並mask “Quant”列:

p['Quant'] = p['Quant'].mask(p['Quant'].gt(upper) & p['month'].str[-2:].isin(['03','04']))

Output:

   Fruits   month  weight  Quant
0   Apple  201401       2  251.0
1  Orange  201502       4  178.0
2  Banana  201603       1    NaN
3   Mango  201604       6    NaN

利用:

p['Quant1'] = p[~(((p['month']=='201603')|(p['month']=='201604'))&(p['Quant']>250))]['Quant']

您可以使用.loc

p.loc[(p.Quant > upper) & (p.month.str[-2:].isin(['03','04'])), 'Quant'] = np.nan

OutPut:

   Fruits   month  weight  Quant
0   Apple  201401       2  251.0
1  Orange  201502       4  178.0
2  Banana  201603       1    NaN
3   Mango  201604       6    NaN

暫無
暫無

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

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