根据字符串(正则表达式)将一行拆分为更多行
Posted
技术标签:
【中文标题】根据字符串(正则表达式)将一行拆分为更多行【英文标题】:Split a row into more rows based on a string (regex) 【发布时间】:2021-07-11 01:04:13 【问题描述】:我有这个 df,我想拆分它:
cities3 = 'Metropolitan': ['New York', 'Los Angeles', 'San Francisco'],
'NHL': ['RangersIslandersDevils', 'KingsDucks', 'Sharks']
cities4 = pd.DataFrame(cities3)
要获得像这样的新 df:(请点击图片)
我可以使用什么代码?
【问题讨论】:
【参考方案1】:您可以使用此正则表达式根据一个大写字母和一个小写字母来拆分您的列:
(?<=[a-z])(?=[A-Z])
然后您可以使用this answer 中描述的技术将列替换为其分解版本:
cities4 = cities4.assign(NHL=cities4['NHL'].str.split(r'(?<=[a-z])(?=[A-Z])')).explode('NHL')
输出:
Metropolitan NHL
0 New York Rangers
0 New York Islanders
0 New York Devils
1 Los Angeles Kings
1 Los Angeles Ducks
2 San Francisco Sharks
如果你想重置索引(到 0..5),你可以这样做(在上述命令之后或作为它的一部分)
cities4.reset_index().reindex(cities4.columns, axis=1)
输出:
Metropolitan NHL
0 New York Rangers
1 New York Islanders
2 New York Devils
3 Los Angeles Kings
4 Los Angeles Ducks
5 San Francisco Sharks
【讨论】:
以上是关于根据字符串(正则表达式)将一行拆分为更多行的主要内容,如果未能解决你的问题,请参考以下文章