3 回答

TA貢獻1847條經驗 獲得超7個贊
由于NaN/NaN給出NaN, 并且NaN>1是假的,在除法之后,您可以嘗試NaN用 2 填充值,例如或用任何大于 1 的數字填充值,使用fillna, 來屏蔽你想要的:
df1.div(df2).fillna(2)
例子:
df1=pd.DataFrame({'X':[np.nan,2],'Y':[2,1]})
df1
# X Y
#0 NaN 2
#1 2.0 1
df2=pd.DataFrame({'X':[np.nan,2],'Y':[1,7]})
df2
# X Y
#0 NaN 1
#1 2.0 7
df1.div(df2)
# X Y
#0 NaN 2.000000
#1 1.0 0.142857
df1.div(df2).fillna(2)>1
# X Y
#0 True True
#1 False False

TA貢獻1818條經驗 獲得超11個贊
也許為它寫一個函數而不是像這樣劃分它們(稍微偽代碼)
def nanChecker(a, b):
if a == NaN && b == NaN:
return true
return false

TA貢獻1802條經驗 獲得超4個贊
這很容易,使用元素明智的操作
import pandas as pd
data1 = [(None, 2), (2, 1)]
data2 = [(None, 1), (2, 7)]
dataFrame1 = pd.DataFrame(data=data1)
dataFrame2 = pd.DataFrame(data=data2)
divisionResults = dataFrame1.div(dataFrame2)
resultFrame = (divisionResults>1) | (dataFrame1.isnull() & (dataFrame2.isnull()))
添加回答
舉報