我在数据帧中有一列,在某些行中我有状态,有时只有城市。例如,在某些行中,我只有:"洛杉矶",但在其他行中,可能有"CA洛杉矶"。
我想将该列拆分为两个新列:州和城市,如果没有指定州,则可以为空。类似这样的东西:
国家迈阿密佛罗里达州休斯顿您可以使用
^(?:([A-Z]{2})s+)?(.*)
请参阅regex演示。详细信息:
^
-字符串的开头(?:([A-Z]{2})s+)?
-的可选出现([A-Z]{2})
-组1:两个大写ASCII字母s+
-一个或多个空白
(.*)
-第2组:除了换行字符之外的任何零个或多个字符,尽可能多
如果您正在使用Pandas,请使用
df[['STATE','CITY']] = df['COLUMN'].str.extract(r'^(?:([A-Z]{2})s+)?(.*)', expand=False)