第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

AttributeError:在 if 條件中使用 & 時(shí),“float”對(duì)象沒(méi)有屬性“isin”

AttributeError:在 if 條件中使用 & 時(shí),“float”對(duì)象沒(méi)有屬性“isin”

桃花長(zhǎng)相依 2024-01-04 16:25:22
我有兩個(gè)國(guó)家不同年份的人口規(guī)模表,如下所示:   year   pop1          pop20   0   1.000000e+08    1.000000e+081   1   9.620000e+07    9.970000e+072   2   9.254440e+07    9.940090e+073   3   8.902771e+07    9.910270e+074   4   8.564466e+07    9.880539e+07該表僅包含前 300 年的信息。我正在嘗試創(chuàng)建一個(gè)函數(shù)來(lái)判斷哪一年人口減少/增加了 2 倍、10 倍和 100 倍。在 jezrael 的幫助下,我創(chuàng)建了以下函數(shù):def find_year(df,init_pop,multiplier):    pop_size=init_pop*multiplier    pop1_values=df['pop1'].unique().tolist()    pop2_values=df['pop2'].unique().tolist()       s=pd.DataFrame(df.set_index('year').sub(pop_size).abs().idxmin(),columns =[multiplier])   return(s)問(wèn)題是每個(gè)種群的增長(zhǎng)率是不同的,因此如果我檢查人口何時(shí)減少 10 或 100,其中一個(gè)種群會(huì)在 300 多年后達(dá)到這一點(diǎn),但在這種情況下,我的函數(shù)不會(huì)工作并給出 300 作為最大值。例如,如果我運(yùn)行 pop 減少 0.1 和 0.01 的結(jié)果(pop2 同年,這是錯(cuò)誤的):find_year(data,100000000,0.1)>>>     0.1pop1    59pop2    300find_year(data,100000000,0.01)>>>     0.01pop1    119pop2    300為了修復(fù)它,我在函數(shù)內(nèi)創(chuàng)建了條件來(lái)檢查是否:pop_size=init_pop*multiplier位于原始 df 的某一列內(nèi),如果不在,則不會(huì)將其添加到結(jié)果中。我嘗試這樣做:def find_year(df,init_pop,multiplier):    pop_size=init_pop*multiplier    pop1_values=df['pop1'].unique().tolist()    pop2_values=df['pop2'].unique().tolist()        if pop_size.isin(pop1_values) & pop_size.isin(pop2_values):                s=pd.DataFrame(df.set_index('year').sub(pop_size).abs().idxmin(),columns =[multiplier])        return(s)    elif pop_size.isin(pop1_values) & ~pop_size.isin(pop2_values):        s=pd.DataFrame(df.set_index('year').sub(pop_size).abs().idxmin(),columns =[multiplier])        s.drop('pop2',axis=0,inplace=True)        return(s)    elif pop_size.isin(pop2_values) & ~pop_size.isin(pop1_values):                s=pd.DataFrame(df.set_index('year').sub(pop_size).abs().idxmin(),columns =[multiplier])        s.drop('pop1',axis=0,inplace=True)        return(s)                但是當(dāng)我運(yùn)行它時(shí)我得到:AttributeError:“float”對(duì)象沒(méi)有屬性“isin”我也嘗試將數(shù)字更改為整數(shù),但我仍然遇到相同的錯(cuò)誤,只是它說(shuō)的是 int,而不是“float”。我不明白為什么會(huì)發(fā)生這種情況。我的最終目標(biāo):添加條件,如果變量“pop_size”不在原始表的 pop1 或 pop2 列中,它將從結(jié)果 df 中刪除該行(這意味著需要 300 年)。
查看完整描述

1 回答

?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊

您收到錯(cuò)誤是因?yàn)榧葲](méi)有屬性int也float沒(méi)有isin屬性。它是在 pandas 數(shù)據(jù)幀上定義的?,F(xiàn)在這里有一些可能可以解決您的問(wèn)題:


def find_year(df, init_pop, multiplier):

    pop_size = init_pop*multiplier

    pop1_values = df['pop1'].unique().tolist()

    pop2_values = df['pop2'].unique().tolist()

    s = pd.DataFrame(df.set_index('year').sub(

        pop_size).abs().idxmin(), columns=[multiplier])


    if pop_size in pop1_values and not pop_size in pop2_values:

        s.drop('pop2', axis=0, inplace=True)

    elif pop_size in pop2_values and not pop_size in pop1_values:

        s.drop('pop1', axis=0, inplace=True)


    return s


查看完整回答
反對(duì) 回復(fù) 2024-01-04
  • 1 回答
  • 0 關(guān)注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)