我已经收到了一些如下所示格式的数据:
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
感谢您的帮助。
谢谢
答案 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