亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 函數不根據數據框中的數字返回匹配行

Python 函數不根據數據框中的數字返回匹配行

犯罪嫌疑人X 2023-12-09 15:58:49
我在 pandas 中有一個像這樣格式化的數據框。(df)School ID      Column 1       Column 2     Column 3School 1                      8100         8200  School 2       9-999 School 3                      9300         9500 School 4                      7700         7800 School 5       8999....我希望能夠輸入一個值,例如如果該值是直接命中第1列(字符串類型),例如輸入數字:9-999,它將返回Input Number: 9-999School ID     Column 1School 2      9-999但如果輸入的數字介于第 2 列和第 3 列(浮點數)中的數字之間,我想返回關聯的學校 ID,如下所示。Input Number: 8110School ID      Column 2    Column 3School 5       8100        8200現在我有這個代碼:def find(num) :d1=df.loc[df['Column 1']==num]if len(d1)>0 :    return d1[['School ID','Column 1']]else :    return df.loc[(num>= df['Column 2']) & (num<= df['Column 3'])][['School ID','Column 2','Column 3']]但我收到一條錯誤消息:“返回”外部函數
查看完整描述

1 回答

?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

s = '9-999'


q = df[df['Column_1']==str(s)]


if len(q):

    print(q)

else:

    m = df[['Column_2', 'Column_3']].apply(lambda x: x['Column_2'] <= s <= x['Column_3'], axis=1)

    print(df[m])

印刷:


  School_ID Column_1  Column_2  Column_3

1  School 2    9-999       0.0       0.0

為了s = 8110:


  School_ID Column_1  Column_2  Column_3

0  School 1        0    8100.0    8200.0

編輯:為了獲得一致的數據類型,您可以將 Column2 和 Column3 轉換為浮點數:


s = '8110'


q = df[df['Column_1']==str(s)]


df['Column_2'] = df['Column_2'].astype(float)

df['Column_3'] = df['Column_3'].astype(float)


if len(q):

    print(q)

else:

    s = float(s)

    m = df[['Column_2', 'Column_3']].apply(lambda x: x['Column_2'] <= s <= x['Column_3'], axis=1)

    print(df[m])


查看完整回答
反對 回復 2023-12-09
  • 1 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號