将dataframe中的空值替换为相对于行排名的列名

您所在的位置:网站首页 notepad替换多行 将dataframe中的空值替换为相对于行排名的列名

将dataframe中的空值替换为相对于行排名的列名

2023-03-15 05:33| 来源: 网络整理| 查看: 265

我为我的问题做了以下设置。我有个数据框架,GEO

{'index': {0: 2, 1: 3, 2: 25, 3: 26, 4: 27, 5: 28, 6: 32, 7: 33, 8: 78, 9: 83, 10: 91, 11: 96, 12: 98, 13: 99, 14: 138, 15: 155, 16: 156, 17: 1790}, 'id': {0: 'A001DS007', 1: 'A001DS01', 2: 'A001GS10', 3: 'A001GS11', 4: 'A001GS12', 5: 'A001GS13', 6: 'A001GS17', 7: 'A001GS18', 8: 'A003DS05', 9: 'A003DS10', 10: 'A003GS02', 11: 'A003GS07', 12: 'A003GS09', 13: 'A003GS10', 14: 'A005DS03', 15: 'A005GS01', 16: 'A005GS02', 17: 'R13C1G'}, 'geometry_zone': {0: , 1: , 2: , 3: , 4: , 5: , 6: , 7: , 8: , 9: , 10: , 11: , 12: , 13: , 14: , 15: , 16: , 17: }, 'centroid': {0: , 1: , 2: , 3: , 4: , 5: , 6: , 7: , 8: , 9: , 10: , 11: , 12: , 13: , 14: , 15: , 16: , 17: }, 'A001DS007': {0: 1, 1: 10, 2: 8, 3: 8, 4: 7, 5: 6, 6: 3, 7: 3, 8: 6, 9: 5, 10: 12, 11: 2, 12: 5, 13: 5, 14: 10, 15: 10, 16: 10, 17: 13}, 'A001DS01': {0: 13, 1: 1, 2: 3, 3: 4, 4: 5, 5: 4, 6: 13, 7: 13, 8: 10, 9: 14, 10: 2, 11: 14, 12: 14, 13: 14, 14: 7, 15: 7, 16: 8, 17: 3}, 'A001GS10': {0: 14, 1: 2, 2: 1, 3: 3, 4: 4, 5: 5, 6: 14, 7: 14, 8: 18, 9: 17, 10: 7, 11: 16, 12: 16, 13: 16, 14: 11, 15: 11, 16: 16, 17: 6}, 'A001GS11': {0: 12, 1: 3, 2: 2, 3: 1, 4: 3, 5: 3, 6: 11, 7: 11, 8: 16, 9: 15, 10: 5, 11: 12, 12: 13, 13: 13, 14: 12, 15: 12, 16: 12, 17: 8}, 'A001GS12': {0: 9, 1: 5, 2: 4, 3: 2, 4: 1, 5: 2, 6: 8, 7: 9, 8: 14, 9: 12, 10: 6, 11: 11, 12: 10, 13: 10, 14: 13, 15: 13, 16: 11, 17: 9}, 'A001GS13': {0: 7, 1: 7, 2: 5, 3: 5, 4: 2, 5: 1, 6: 7, 7: 7, 8: 11, 9: 10, 10: 8, 11: 9, 12: 9, 13: 9, 14: 14, 15: 14, 16: 14, 17: 11}, 'A001GS17': {0: 3, 1: 13, 2: 11, 3: 10, 4: 10, 5: 8, 6: 1, 7: 2, 8: 15, 9: 8, 10: 14, 11: 6, 12: 7, 13: 7, 14: 17, 15: 17, 16: 17, 17: 15}, 'A001GS18': {0: 4, 1: 14, 2: 12, 3: 12, 4: 12, 5: 10, 6: 2, 7: 1, 8: 17, 9: 7, 10: 16, 11: 8, 12: 6, 13: 6, 14: 18, 15: 18, 16: 18, 17: 16}, 'A003DS05': {0: 8, 1: 8, 2: 10, 3: 11, 4: 11, 5: 12, 6: 10, 7: 10, 8: 1, 9: 6, 10: 4, 11: 4, 12: 8, 13: 8, 14: 6, 15: 6, 16: 5, 17: 10}, 'A003DS10': {0: 10, 1: 18, 2: 18, 3: 17, 4: 17, 5: 16, 6: 9, 7: 8, 8: 9, 9: 1, 10: 18, 11: 7, 12: 3, 13: 3, 14: 15, 15: 15, 16: 13, 17: 18}, 'A003GS02': {0: 11, 1: 4, 2: 7, 3: 6, 4: 6, 5: 7, 6: 12, 7: 12, 8: 4, 9: 11, 10: 1, 11: 10, 12: 11, 13: 11, 14: 5, 15: 5, 16: 6, 17: 2}, 'A003GS07': {0: 2, 1: 9, 2: 9, 3: 9, 4: 9, 5: 9, 6: 4, 7: 6, 8: 2, 9: 4, 10: 11, 11: 1, 12: 4, 13: 4, 14: 8, 15: 8, 16: 7, 17: 12}, 'A003GS09': {0: 5, 1: 15, 2: 15, 3: 13, 4: 13, 5: 13, 6: 5, 7: 4, 8: 5, 9: 3, 10: 15, 11: 3, 12: 1, 13: 2, 14: 9, 15: 9, 16: 9, 17: 14}, 'A003GS10': {0: 6, 1: 17, 2: 16, 3: 16, 4: 14, 5: 14, 6: 6, 7: 5, 8: 8, 9: 2, 10: 17, 11: 5, 12: 2, 13: 1, 14: 16, 15: 16, 16: 15, 17: 17}, 'A005DS03': {0: 18, 1: 16, 2: 17, 3: 18, 4: 18, 5: 18, 6: 18, 7: 18, 8: 12, 9: 16, 10: 13, 11: 18, 12: 18, 13: 18, 14: 1, 15: 3, 16: 3, 17: 7}, 'A005GS01': {0: 17, 1: 11, 2: 13, 3: 15, 4: 16, 5: 17, 6: 17, 7: 17, 8: 7, 9: 13, 10: 10, 11: 15, 12: 15, 13: 15, 14: 2, 15: 1, 16: 2, 17: 4}, 'A005GS02': {0: 15, 1: 12, 2: 14, 3: 14, 4: 15, 5: 15, 6: 16, 7: 15, 8: 3, 9: 9, 10: 9, 11: 13, 12: 12, 13: 12, 14: 3, 15: 2, 16: 1, 17: 5}, 'R13C1G': {0: 16, 1: 6, 2: 6, 3: 7, 4: 8, 5: 11, 6: 15, 7: 16, 8: 13, 9: 18, 10: 3, 11: 17, 12: 17, 13: 17, 14: 4, 15: 4, 16: 4, 17: 1}}

其中,列名与id相同,每行中的值表示列名中的项与id的距离有多近(它对所有计算的距离进行排序)。

GEO = index id geometry_zone \ 0 2 A001DS007 POLYGON ((53.16200 50.20131, 52.84363 48.45026... 1 3 A001DS01 POLYGON ((59.04953 49.34561, 58.77158 47.52346... 2 25 A001GS10 POLYGON ((58.72525 45.79395, 59.72898 45.57777... centroid A001DS007 A001DS01 A001GS10 A001GS11 \ 0 POINT (53.49869 49.22928) 1 13 14 12 1 POINT (59.29040 48.38586) 10 1 2 3 2 POINT (59.35477 46.54529) 8 3 1 2 A001GS12 A001GS13 A001GS17 A001GS18 A003DS05 A003DS10 A003GS02 \ 0 9 7 3 4 8 10 11 1 5 7 13 14 8 18 4 2 4 5 11 12 10 18 7 A003GS07 A003GS09 A003GS10 A005DS03 A005GS01 A005GS02 R13C1G 0 2 5 6 18 17 15 16 1 9 15 17 16 11 12 6 2 9 15 16 17 13 14 6

同时,我还有另一个数据框架,

item = {'Code': {0: 'A1', 1: 'A2', 2: 'A3', 3: 'A4', 4: 'A5', 5: 'A6', 6: 'A7', 7: 'A8', 8: 'A9', 9: 'A10', 10: 'A11', 11: 'A12', 12: 'A13', 13: 'A14', 14: 'A15', 15: 'A16', 16: 'A17', 17: 'A18', 18: 'A19', 19: 'A20', 20: 'A21', 21: 'A22', 22: 'A23', 23: 'A24', 24: 'A25', 25: 'A26'}, 'Manual': {0: 'A003GS07', 1: 'A003GS07', 2: 'A003GS07', 3: 'A003GS02', 4: 'A001GS10', 5: 'A001GS11', 6: 'A001GS18', 7: 'A001GS12', 8: 'R13C1G', 9: 'A001GS12', 10: 'A001GS18', 11: 'A001GS17', 12: 'A001GS13', 13: 'A001GS13', 14: 'A003DS10', 15: 'A005GS02', 16: 'A003DS05', 17: 'A005GS01', 18: 'A003GS09', 19: 'A003GS10', 20: 'A003GS10', 21: 'A003GS10', 22: 'A003GS10', 23: 'A003GS10', 24: 'A003GS10', 25: 'A005DS03'}, 'closest_1': {0: '', 1: '', 2: '', 3: '', 4: '', 5: '', 6: '', 7: '', 8: '', 9: '', 10: '', 11: '', 12: '', 13: '', 14: '', 15: '', 16: '', 17: '', 18: '', 19: '', 20: '', 21: '', 22: '', 23: '', 24: '', 25: ''}, 'closest_2': {0: '', 1: '', 2: '', 3: '', 4: '', 5: '', 6: '', 7: '', 8: '', 9: '', 10: '', 11: '', 12: '', 13: '', 14: '', 15: '', 16: '', 17: '', 18: '', 19: '', 20: '', 21: '', 22: '', 23: '', 24: '', 25: ''}, 'closest_3': {0: '', 1: '', 2: '', 3: '', 4: '', 5: '', 6: '', 7: '', 8: '', 9: '', 10: '', 11: '', 12: '', 13: '', 14: '', 15: '', 16: '', 17: '', 18: '', 19: '', 20: '', 21: '', 22: '', 23: '', 24: '', 25: ''}, 'closest_4': {0: '', 1: '', 2: '', 3: '', 4: '', 5: '', 6: '', 7: '', 8: '', 9: '', 10: '', 11: '', 12: '', 13: '', 14: '', 15: '', 16: '', 17: '', 18: '', 19: '', 20: '', 21: '', 22: '', 23: '', 24: '', 25: ''}} Code Manual closest_1 closest_2 closest_3 closest_4 0 A1 A003GS07 1 A2 A003GS07 2 A3 A003GS07 3 A4 A003GS02 4 A5 A001GS10 5 A6 A001GS11 6 A7 A001GS18 7 A8 A001GS12 8 A9 R13C1G 9 A10 A001GS12 10 A11 A001GS18 11 A12 A001GS17 12 A13 A001GS13 13 A14 A001GS13 14 A15 A003DS10 15 A16 A005GS02 16 A17 A003DS05 17 A18 A005GS01 18 A19 A003GS09 19 A20 A003GS10 20 A21 A003GS10 21 A22 A003GS10 22 A23 A003GS10 23 A24 A003GS10 24 A25 A003GS10 25 A26 A005DS03

现在,我想逐行将所有空列替换为最接近的四个项,因此第一行将是

Code Manual closest_1 closest_2 closest_3 closest_4 0 A1 A003GS07 A001DS007 A003GS07 A001GS17 A001GS18

它们是对应于第一行中的等级1、2、3、4的列名。

我尝试过合并、连接、为每一行创建字典,然后删除该dictionary...but中任何大于4的元素,没有一次尝试接近成功。

如果任何人对如何实现这一点有想法,我将非常感激。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3