使用熊猫根据前面的空白分割缩进数据

时间:2020-04-21 17:43:55

标签: python pandas

我已经收到了一些如下所示格式的数据:

lvl1 - desc
    lvl2 - desc
    lvl2 - desc
        lvl3 - desc
        lvl3 - desc
        lvl3 - desc
            lvl4 - desc
            lvl4 - desc

级别由4个空格的倍数缩进(4、8、12等),带有一些描述性文本。 有人可以告诉我一种基于前面的空格将这一列拆分为多列的方法吗? 输出应如下所示:

lvl1 - desc
                     lvl2 - desc
                     lvl2 - desc
                                         lvl3 - desc
                                         lvl3 - desc
                                         lvl3 - desc
                                                             lvl4 - desc
                                                             lvl4 - desc

感谢您的帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

您是否正在寻找这样的东西:

# sample data
s = """lvl1 - desc1
    lvl2 - desc2
    lvl2 - desc3
        lvl3 - desc4
        lvl3 - desc5
        lvl3 - desc6
            lvl4 - desc7
            lvl4 - desc8"""
df = pd.read_csv(StringIO(s), header=None)

# strip whitespace
df[0] = df[0].str.strip()
# groupby the first 4 characters of the string then apply list
# convert to array then back to a DataFrame and transpose
df2 = pd.DataFrame(df.groupby(df[0].str[:4])[0].apply(list).values.tolist()).T

              0             1             2             3
0  lvl1 - desc1  lvl2 - desc2  lvl3 - desc4  lvl4 - desc7
1          None  lvl2 - desc3  lvl3 - desc5  lvl4 - desc8
2          None          None  lvl3 - desc6          None