创建两个新列,其中第二列是剩余列



我想在数据帧中创建两个新列。其中houseNumber的第一列仅提取新列中的houseNumber。我可以做到这一点(见列号(。我希望在数字后面有一个新列,其中该列的值有时可以为空。

下面是我希望的结果。

import pandas as pd
data = {'houseNumber':['13', '14-A', '13B', '2-15', '1-15', '1B15', '22 A']}
df = pd.DataFrame(data)
df= df.assign(numbers= df['houseNumber'].str.extract('(d+)').astype(int))

如何才能达到以下结果?

houseNumber  numbers   afterNumbers
0          13       13    #no value(comment)  
1        14-A       14    -A
2         13B       13    B
3        2-15        2    -15
4        1-15        1    -15
5        1B15        1    B15
6        22 A       22     A

您可以将apply与此function一起使用。

def split_number(string):
num = ""
i = 0
for s in string:
if s.isdigit():
num+=s
i+=1
else:
break
if i == len(string):
return pd.Series([int(num), ""])
else:
return pd.Series([int(num), string[i:]])

df[['numbers', 'afterNumbers']] = df.apply(lambda row: split_number(row.houseNumber), axis=1)
houseNumber  numbers afterNumbers
0          13       13             
1        14-A       14           -A
2         13B       13            B
3        2-15        2          -15
4        1-15        1          -15
5        1B15        1          B15
6        22 A       22            A

最新更新