为了账号安全,请及时绑定邮箱和手机立即绑定

循环遍历一个数据帧中的一列,与另一个数据帧中的一列进行比较

循环遍历一个数据帧中的一列,与另一个数据帧中的一列进行比较

江户川乱折腾 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 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号