คุณสามารถใช้np.where ถ้าcondเป็นอาร์เรย์บูลีนและAและBเป็นอาร์เรย์ดังนั้น
C = np.where(cond, A, B)
กำหนดให้ C เท่ากับAที่condเป็นจริงและเท็จอยู่Bที่ไหนcond
import numpy as np
import pandas as pd
a = [['10', '1.2', '4.2'], ['15', '70', '0.03'], ['8', '5', '0']]
df = pd.DataFrame(a, columns=['one', 'two', 'three'])
df['que'] = np.where((df['one'] >= df['two']) & (df['one'] <= df['three'])
                     , df['one'], np.nan)
ผลตอบแทน
  one  two three  que
0  10  1.2   4.2   10
1  15   70  0.03  NaN
2   8    5     0  NaN
หากคุณมีเงื่อนไขมากกว่าหนึ่งเงื่อนไขคุณสามารถใช้np.selectแทนได้ ตัวอย่างเช่นหากคุณต้องการที่df['que']จะเท่ากันdf['two']เมื่อdf['one'] < df['two']นั้น
conditions = [
    (df['one'] >= df['two']) & (df['one'] <= df['three']), 
    df['one'] < df['two']]
choices = [df['one'], df['two']]
df['que'] = np.select(conditions, choices, default=np.nan)
ผลตอบแทน
  one  two three  que
0  10  1.2   4.2   10
1  15   70  0.03   70
2   8    5     0  NaN
หากเราสามารถสรุปได้ว่าdf['one'] >= df['two']เมื่อใดที่df['one'] < df['two']เป็นเท็จเงื่อนไขและทางเลือกต่างๆก็สามารถทำให้ง่ายขึ้นได้
conditions = [
    df['one'] < df['two'],
    df['one'] <= df['three']]
choices = [df['two'], df['one']]
(สมมติฐานอาจไม่เป็นจริงหากมีdf['one']หรือdf['two']มี NaN)
โปรดทราบว่า 
a = [['10', '1.2', '4.2'], ['15', '70', '0.03'], ['8', '5', '0']]
df = pd.DataFrame(a, columns=['one', 'two', 'three'])
กำหนด DataFrame ด้วยค่าสตริง เนื่องจากมันดูเป็นตัวเลขคุณอาจจะดีกว่าในการแปลงสตริงเหล่านั้นให้เป็นลอย:
df2 = df.astype(float)
สิ่งนี้จะเปลี่ยนผลลัพธ์เนื่องจากสตริงเปรียบเทียบอักขระทีละอักขระในขณะที่การลอยจะถูกเปรียบเทียบเป็นตัวเลข
In [61]: '10' <= '4.2'
Out[61]: True
In [62]: 10 <= 4.2
Out[62]: False
     
              
ifเป็นเท่าFalseไหร่ถ้าคำสั่งคืออะไร?