как я могу изменить форму кадра данных, где подмножество столбцов являются значениями y для определенных значений x?
df_record = pd.DataFrame({
'date' : ['2019-03-17', '2019-03-17', '2019-03-17', '2019-03-17'],
'id' : ['a', 'a', 'b', 'b'],
'meta' : ['A', 'B', 'A', 'B'],
'y11' : [0.1, 0.2, 0.3, 0.4],
'y12' : [1, 2, 3, 4],
'y21' : [10, 20, 30, 40],
'y22' : [100, 200, 300, 400],
})
В этом примере y12, y12, y21 и y22 соответствуют, например, [10,20,100,200].Я могу добавить это к каждой строке:
xs = [10,20,100,200]
df_ = pd.DataFrame()
for i in range(len(df_record)):
xs_ = pd.Series(xs, name=i)
df_ = pd.concat([df_, xs_], axis=1)
df_['xs'] = [ 'x%i'%i for i in xs ]
pd_ = pd.concat([df_record, df_.set_index('xs').T], axis=1)
Что печатает:
date id meta y11 y12 y21 y22 x10 x20 x100 x200
0 2019-03-17 a A 0.1 1 10 100 10 20 100 200
1 2019-03-17 a B 0.2 2 20 200 10 20 100 200
2 2019-03-17 b A 0.3 3 30 300 10 20 100 200
3 2019-03-17 b B 0.4 4 40 400 10 20 100 200
Но теперь я потерялся.Я почти уверен, что что-то вроде df_.pivot()
должно помочь мне отразить структуру, то есть xs - это индексный уровень, подобный ['date', 'id', 'meta', 'xs']
.
Заранее спасибо!
PS.Как я могу опубликовать результаты вышеуказанных команд с Jupyter NB?