【问题标题】:pandas split columns using length熊猫使用长度拆分列
【发布时间】:2021-03-23 23:23:33
【问题描述】:

如何使用长度拆分 pandas 中的列。 str.split 需要使用分隔符。我可以在每列上使用两次切片,如下所示

for i, col in enumerate(cols):
   df[f'mn{i}'] = df[col].str.split[1:]
   df[col] = df[col].str.split[:1]

因此寻找更高效的方法,例如 pandas 中的内置函数,它可以根据长度拆分许多列。

数据框

Col1     Col2      Col3
012021   012021    032021
012021   012021    032021

预期输出

Col1     Col2      Col3   Col4     Col5      Col6
01       01        03     2021     2021      2021
01       01        03     2021     2021      2021

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    试试str.extractconcat

    pd.concat([df[x].str.extract('(\d{2})(\d{4})').add_prefix(f'{x}_') 
               for x in df], 
              axis=1)
    

    输出:

      Col1_0 Col1_1 Col2_0 Col2_1 Col3_0 Col3_1
    0     01   2021     01   2021     03   2021
    1     01   2021     01   2021     03   2021
    

    【讨论】:

    • 所以str.extract('(\d{2})(\d{4})') 基于(\d{2})(\d{4}) 创建2 列?
    • @sjd 是的,该模式有两个捕获组,每个都是一个新列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多