在lambda内嵌套多个if条件



在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

最新更新