darklinboxs
2018-07-31 10:21
采纳率: 51.9%
浏览 5.9k

python 提取数据到新列,用pandas

图片说明

如图片,所示,如何提取楼栋里边的数字,到excel新列里边,分别提取到栋,单元,楼层三列里边,同时三列是通过python建立,不是手动建立的,有点复杂,求大神赐教。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 已采纳

    图片说明

    点赞 打赏 评论
  •  import pandas as pd
    import re
    
    df = pd.read_excel("Q696322.xlsx", sheet_name = 0)
    df['栋'] = df.apply(lambda x: re.match("\\d+(?=栋)", x["楼栋"], re.M|re.I).group(), axis=1)
    df['单元'] = df.apply(lambda x: re.match("\\d+[^\\d]+(\\d+)", x["楼栋"], re.M|re.I).group(1), axis=1)
    df['门牌号'] = df.apply(lambda x: re.match("\\d+[^\\d]+\\d+[^\\d]+(\\d+)", x["楼栋"], re.M|re.I).group(1), axis=1)
    df.to_excel("Q696322_result.xlsx")
    print(df.head)
    

    之前还回答了几个问题,如果问题解决,麻烦一并采纳,谢谢

    点赞 打赏 评论
  • end1n9 2018-07-31 12:58

    用的vba实现的:

     Sub main()
        iRowFirst = 2     ' 数据第一行
        iRowLast = 5      ' 数据最后一行
        iColStr = 2       ' 楼栋字符串
        iColBuild = 3     ' 栋
        iColUnit = 4      ' 单元
        iColHouse = 5     ' 门牌号
    
        For i = iRowFirst To iRowLast
            strstr = Sheet1.Cells(i, iColStr)
            Sheet1.Cells(i, iColBuild) = Mid(strstr, 1, 1)
            Sheet1.Cells(i, iColUnit) = Mid(strstr, 3, 1)
            Sheet1.Cells(i, iColHouse) = Mid(strstr, 6)
        Next
    End Sub
    
    
    点赞 打赏 评论

相关推荐