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

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

循環遍歷一個數據幀中的一列,與另一個數據幀中的一列進行比較

循環遍歷一個數據幀中的一列,與另一個數據幀中的一列進行比較

江戶川亂折騰 2021-09-14 15:55:34
現在我有兩個數據框,它們看起來像:c = pd.DataFrame({'my_goal':[3, 4, 5, 6, 7],                 'low_number': [0,100,1000,2000,3000],                 'high_number': [100,1000,2000,3000,4000]})和a= pd.DataFrame({'a':['a', 'b', 'c', 'd', 'e'],                'Number':[50, 500, 1030, 2005 , 3575]})我想要做的是,如果“數字”介于低數字和高數字之間,我希望它恢復“my_goal”中的值。例如,如果我們查看“a”,它的“數字是 100,所以我希望它帶回 3。我還想創建一個數據框,其中包含數據框 a 中的所有列和數據框 c 中的“my_goal”列。我希望輸出看起來像:我嘗試將我的高低數字放入一個單獨的列表并從中運行 for 循環,但所有給我的是“my_goal”數字:low_number= 'low_number': [0,100,1000,2000,3000]for i in a:    if float(i) >= low_number:        a = c['my_goal']print(a)
查看完整描述

2 回答

?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

可以用pd.cut,當我看到范圍的時候,我首先想到的是pd.cut:


dfa = pd.DataFrame(a)

dfc = pd.DataFrame(c)


dfa['my_goal'] = pd.cut(dfa['Number'],

                        bins=[0]+dfc['high_number'].tolist(),

                        labels=dfc['my_goal'])

輸出:


   a  Number my_goal

0  a      50       3

1  b     500       4

2  c    1030       5

3  d    2005       6

4  e    3575       7


查看完整回答
反對 回復 2021-09-14
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

我稍微更改了第 4 行,以包含不滿足條件的測試用例。您可以將 a 與條件為真的 c 行連接起來。


a= pd.DataFrame({'a':['a', 'b', 'c', 'd', 'e'],'Number':[50, 500, 1030, 1995 , 3575]})

cond= a.Number.between( c.low_number, c.high_number)


pd.concat([a, c.loc[cond, ['my_goal']] ], axis = 1, join = 'inner')



    Number  a   my_goal

0   50      a   3

1   500     b   4

2   1030    c   5

4   3575    e   7


查看完整回答
反對 回復 2021-09-14
  • 2 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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