输入数据框:
file_id filename
30140 WS52RN-300-7750460312963...
30730 DMX5N4H-336-7G5082A_15089528977...
31215 114-403CBC_1508935183409.mp4
32000 VQCYSR-300-84L7F5D9_1508937725363...
32648 69HM-336-6262906_48508952353171.mp4
词典:
h={28: [30138, 30636], 29: [30637, 31117], 30: [31118, 31616], 31: [31617, 32115], 32: [32151, 32649]}
我需要根据上述命令创建列file_num
。
如果file_id在value
范围之间,则密钥变为file_num
预期输出:
file_id filename file_num
30140 WS52RN-300-7750460312963... 28
30141 DMX5N4H-336-7G5082A_15089528977... 28
31215 114-403CBC_1508935183409.mp4 30
32000 VQCYSR-300-84L7F5D9_1508937725363... 31
32648 69HM-336-6262906_48508952353171.mp4 32
我正在尝试将地图与h
结合使用,但没有得到所需的结果。任何帮助表示赞赏。
答案 0 :(得分:2)
使用IntervalIndex
matchdf=pd.DataFrame.from_dict(h,'index').reset_index()
matchdf.index=pd.IntervalIndex.from_arrays(left=matchdf[0],right=matchdf[1],closed= 'both')
df['New']=matchdf.loc[df.file_id]['index'].values
df
Out[128]:
file_id filename New
0 30140 WS52RN-300-7750460312963... 28
1 30730 DMX5N4H-336-7G5082A_15089528977... 29
2 31215 114-403CBC_1508935183409.mp4 30
3 32000 VQCYSR-300-84L7F5D9_1508937725363... 31
4 32648 69HM-336-6262906_48508952353171.mp4 32