在pandas数据框架中有一个名为zipcode的列。有些行包含NaN值,有些包含正确的字符串格式,如' 16000 ',其余包含错误的格式,如'18000'。我想要的是跳过NaN值(不要放弃它们)并将错误的邮政编码转换为正确的邮政编码;例如:'18000' ->180 00。有可能通过应用来实现吗?到目前为止,我得到的只有这个:
df['zipcode']apply(lambda row: print(row[:3] + ' ' + row[3:]) if type(row) == str else row)
数据框架示例:
df = pd.DataFrame(np.array(['11100', '246 00', '356 50',
np.nan, '18000', '156 00', '163 00']), columns=['zipcode'])
zipcode
0 11100
1 246 00
2 356 50
3 nan
4 18000
5 156 00
6 163 00
谢谢。
让我们试试.str.replace
:
df['zipcode'] = df['zipcode'].str.replace(r'(d{3})s*(d+)', r'g<1> g<2>')
zipcode
0 111 00
1 246 00
2 356 50
3 nan
4 180 00
5 156 00
6 163 00