pandas25 if else语句(多数据df选择)( tcy)

if-then  2018/12/31 
    
============================================================
1.if-then / if-then-else用在一个数据帧上:
    
# 实例1:if-then-else
df = pd.DataFrame({'A': [10,11,12],'B': [20,21,22],'C': [30, 31, -32]})
    
df.loc[df.A >= 11, 'B'] = -1        #if-then在一列上
df.loc[df.A >= 5, ['B', 'C']] = 88  #if-then分配给2列
df.loc[df.A < 12, ['B', 'C']] = 99  # 添加不同逻辑另一行,以执行-else
    
#df              result1          result2          result3
    A   B   C        A   B   C       A    B   C       A    B   C
0  10  20  30    0  10  20  30    0  10  88  88    0  10  99  99
1  11  21  31    1  11  -1  31    1  11  88  88    1  11  99  99
2  12  22 -32    2  12  -1 -32    2  12  88  88    2  12  88  88
    
# 实例2:where 矢量化if else
    
df_bool = pd.DataFrame({'A': [True] * 3, 'B': [False] * 3, 'C': [True, False,True] })
    
df.where(df_bool, -66)#根据bool值选择
df['logic'] = np.where(df['A'] > 11, 'high', 'low')
    
#df              result4          result5
    A   B   C       A    B   C       A   B   C    logic
0  10  99  99    0  10 -66  99    0  10  99  99   low
1  11  99  99    1  11 -66 -66    1  11  99  99   low
2  12  88  88    2  12 -66  88    2  12  88  88   high

# 实例3:
s1=pd.Series([11,np.nan,13,14,np.nan])
s2=pd.Series([np.nan,22,23,24,25])
np.where(pd.isnull(s1),s2,s1)#array([11., 22., 13., 14., 25.])

df1=pd.DataFrame({'a':[11,np.nan,13,14,np.nan],'b':[np.nan,22,23,24,25]})
df2=pd.DataFrame({'a':[np.nan,42,43,np.nan,45],'b':[31,np.nan,33,34,35]})
pd.DataFrame(np.where(pd.isnull(df1),df2,df1),columns=list('ab'))

# df1                     df2              result                          
   a        b            a     b                 a     b
0  11.0   NaN        0   NaN   31.0        0  11.0  31.0  
1  NaN   22.0        1   42.0  NaN         1  42.0  22.0
2  13.0  23.0        2   43.0  33.0        2  13.0  23.0
3  14.0  24.0        3   NaN   34.0        3  14.0  24.0
4  NaN   25.0        4   45.0  35.0        4  45.0  25.0
    
============================================================
2.if-then / if-then-else用在2个数据帧上:
    
实例1:# 若df1>=df2选择df1中数据,否则选择df2中的数据
    
df1 = pd.DataFrame({'A': [10, 11], 'B': [12, 13]})
df2 = pd.DataFrame({'A': [21, -22], 'B': [23, -24]})
    
result1=df1[df1>=df2].append(df2[df1<df2]).dropna()
result2=df1[df1.A>df2.B]
result3=df1[df1.A!=11]
    
# df1        df2          result1   result2    result3
   A    B       A    B      A   B     A   B       A  B
0  10  12    0  21  23    0 21 23   1 11 13    0 10 12
1  11  13    1 -22 -24    1 11 13
============================================================

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值