通过分隔符解析 pandas DataFrame

Parsing a pandas DataFrame by delimiter

我有以下问题:

我有一个 pandas DataFrame 如下:

      df 

       A                    B 

      GRA                 x - kuaiau;;a; y - kaj;jsuik;;;ou; yy -ll'jkusj;;l;
      GRB                 xx -iusiksu;;a; z - kuayatik;;;ou; 
      GRC                 tt - hay;hayh; 
      GRD                 NA
      GRE                 
      

所以我想要的是,每当 B 列不为空时,根据分隔符“-”拆分 B 列字符串,并将这些组放在 2 列中,如图所示。

预期输出:

  df_final

       A                    C                            D
      GRA                  x y yy              kuaiau;;a; kaj;jsuik;;;ou; ll'jkusj;;l;
      GRB                  xx z                iusiksu;;a; kuayatik;;;ou; 
      GRC                  tt                  hay;hayh; 
      GRD                  NA                  NA
      GRE                 
      

我可以根据分隔符“-”拆分列。但是,由于我有不同数量的“-”,所以当列为 NULL、空白或 NA 时,我无法正确连接它们以获得所需的输出,也根本无法使其工作。

任何帮助都一定会有所帮助。

我们可以在这里使用 str.replace 和适当的正则表达式模式:

df["C"] = df["B"].str.replace(r'\s*-\s*\S+;+\S+;+\s*', ' ').str.strip()
df["D"] = df["B"].str.replace(r'\w+\s*-\s*', '')