我想编写一个函数来清除数据框的索引列。


删除具有高级别ID的整个行。例如删除

East Kootenay (5901) 01010
将索引调整为7位数字,以获取低级ID。例如,转

East Kootenay A (5901017) RDA 02020
进入5901017
如果有两个括号,请在第二个括号中仅保留7位数字。例如,

Sechelt (Part) (5929803) IGD 020205929803

Capital H (Part 1) (5917054) RDA 010205917054

Capital H (Part 2) (5917056) RDA 020305917056

T'Sou-ke 1 (Sooke 1) (5917817) IRI 010105917817

T'Sou-ke 2 (Sooke 2) (5917818) IRI 000005917818


一个仅适用于一个括号的代码示例是

def extract_id(s):
    m = re.search('\((.*)\)', s)
    if m:
        i = int(m.group(0)[1:-1])
        return i

if __name__ == '__main__':
    # Read data
    census_subdivision_profile = pd.read_excel('../data/census_subdivision_profile.xlsx', sheetname='Data',
                                               index_col='Geography', encoding='utf-8').T
    print(census_subdivision_profile.head())
    print(census_subdivision_profile.shape)

    census_subdivision_profile.index = census_subdivision_profile.index.map(extract_id)
    print(census_subdivision_profile.index)


要查看完整的代码,请参阅我之前发布的另一个问题

Merge dataframes that have indices that one contains another (but not the same)

最佳答案

我想你打算'\(([^)]*)\)' ... hth

关于python - 搜索模式不是唯一的? - 正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44789612/

10-12 23:15