【问题标题】: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:(请点击图片)

我可以使用什么代码?

【问题讨论】:

    标签: python regex pandas split row


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多