У меня есть такой набор данных:
m n o
0 2 22 42
1 3 23 43
2 4 24 44
3 5 25 45
4 6 26 46
5 7 27 47
6 8 28 48
7 9 29 49
8 10 30 50
9 11 31 51
Как мы можем преобразовать это в мультииндексный фрейм данных:
Index m n o
A
0 2 22 42
1 3 23 43
2 4 24 44
B
4 6 26 46
C
6 8 28 48
7 9 29 49
8 10 30 50
** Моя попытка **
import numpy as np
import pandas as pd
df = pd.DataFrame({'m': np.arange(2,12),
'n': np.arange(22,32),
'o': np.arange(42,52)})
df
** Групповой метод **
# Required index and their names
idx = [3,5,9] # A is 0,1,2 B is 4 and C is 6,7,8
idx_orig = idx.copy()
idx_names = ['A','B','C']
# Attempt
idx_diff = np.diff(idx)
idx_diff = np.hstack((idx[0]+1,idx_diff)) # Add the first index value
idx_diff = idx_diff - 1 # Decrease index number
idx_names = np.repeat(idx_names,idx_diff)
# Drop rows with given indices
df = df.drop(df.index[idx_orig])
# Assign new col
df['Names'] = idx_names
#df.groupby('Names').count()
df
Выход
m n o Names
0 2 22 42 A
1 3 23 43 A
2 4 24 44 A
4 6 26 46 B
6 8 28 48 C
7 9 29 49 C
8 10 30 50 C
Здесь я хотел получить многоиндексный фрейм данных со всеми строками, однако groupby дает только счетчики.