我有一个表格,看起来像这样:
import pandas as pd
x = '1233312332344344'
y = ['Name_' + str(i) for i, _ in enumerate(x)]
df = pd.DataFrame({'level': list(x), 'names': y})
看起来像这样:
level names
0 1 Name_0
1 2 Name_1
2 3 Name_2
3 3 Name_3
4 3 Name_4
5 1 Name_5
6 2 Name_6
7 3 Name_7
8 3 Name_8
9 2 Name_9
10 3 Name_10
11 4 Name_11
12 4 Name_12
13 3 Name_13
14 4 Name_14
15 4 Name_15
有没有一种方法可以使用pandas重塑此数据框,以获得基于level列的以下结果?
1 2 3 4
Name_0
Name_0 Name_1
Name_0 Name_1 Name_2
Name_0 Name_1 Name_3
Name_0 Name_1 Name_4
Name_5
Name_5 Name_6
Name_5 Name_6 Name_7
Name_5 Name_6 Name_8
Name_5 Name_9
Name_5 Name_9 Name_10
Name_5 Name_9 Name_10 Name_11
Name_5 Name_9 Name_10 Name_12
Name_5 Name_9 Name_13
Name_5 Name_9 Name_13 Name_14
Name_5 Name_9 Name_13 Name_15
这是一种具有所有层级填充在行中的源数据框。
set_index
和unstack
与你的pivot
完全相同。但是 OP 只希望填充到每个级别结束的位置。因此,对于第9行,级别为2,所以只需要填充到级别为2的列。 - piRSquared