我正在尝试在我的 pandas 数据框中的地址列中建立一致性。我的邮政编码列有两种格式:1) 87301 2) 87301-1234。并非每一行都有连字符,因此我需要在连字符存在时将其拆分。
我的数据如下所示:
State ZIP
CA 85145-7045
PA 76913
我尝试了一些方法来解决这个问题。我尝试过:
data['Zip_1'],data['Zip_2'] = data['Zip'].str.split('-').str
我已经尝试过:
data['Zip'] = data['Zip'].str.split('-', n=1, expand=True)
data['Zip'] = data['Zip'][0]
data['Zip_drop'] = data['Zip'][1]
我也尝试过使用 lambda 函数。
但是它只返回空值。
我希望新列对于没有连字符的邮政编码返回 NaN,如果包含连字符,则返回连字符后面的数字。 然而,新列只是为每个观察填充 NaN
最佳答案
您可以通过将“替换”与正则表达式结合使用来实现这一点。
第 1 步
example_df = pd.DataFrame({'State': ['CA', 'PA'],
'ZIP': ['85145-7045', '76913'] })
example_df
第 2 步
# Keep only the numbers before the hyphen (if any).
example_df = example_df.replace('\-\d*', '', regex=True)
example_df
关于python - 根据条件拆分 pandas 数据帧列中特殊字符上的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57485927/