У меня есть фрейм данных, как показано ниже
df = pd.DataFrame({
'subject_ID':[1,2,3,4,5],
'date_visit':['1/1/2020','3/3/2200','13/11/2100','24/05/2198','30/03/2071'],
'a11fever':['Yes','No','Yes','Yes','No'],
'a12diagage':[36,34,42,40,np.nan],
'a12diagyr':[2021,3213,2091,4567,8901],
'a12diagyrago':[6,np.nan,9,np.nan,np.nan]})
Я хотел бы преобразовать фрейм данных, в котором образец вывода для одного субъекта выглядит так, как показано ниже
![enter image description here](https://i.stack.imgur.com/dJ8Io.png)
Хотя я смог сделать это успешно, используя pd.melt
и stack
, я не смог сделать то же самое, используя wide_long
.
pd.melt(df, id_vars =['subject_ID','date_visit'], value_vars =['a11fever', 'a12diagage', 'a12diagyr','a12diagyrago']) # works fine
pd.wide_to_long(df, stubnames=['measurement', 'val'],i=(['subject_ID','date_visit']), j='grp').sort_index(level=0) # returns 0 records
df.set_index(['subject_ID','date_visit']).stack().reset_index() #works fine
другой вопрос, который у меня есть,
a) Всегда ли мы должны упоминать все имена столбцов, которые мы хотели бы преобразовать в value_vars
разделе pd.melt
. Мои реальные данные будут иметь более 120 столбцов. Должен ли я упомянуть все из них здесь?
Можете ли вы помочь мне с этим, как это сделать, используя wide_long
?