Как перевернуть фрейм данных с именами столбцов и значениями в столбце, сохраняя все статические столбцы в фрейме данных? - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть фрейм данных, который имеет 500 столбцов, 2 столбца ('FieldTitle', 'Value') столбцы, строки которых я хочу «перевернуть» в столбцы, и df выглядит следующим образом:

id    FieldTitle    Value   UID   number  XID
1       fname        aaa     12    123    345
1       lname        bbb     12    123    345
2       fname        ccc     23    432    543
2       lname        ddd     23    432    543

Каксделать так, чтобы датафрейм выглядел так ?:

id     fname     lname     UID    number  XID
1       aaa       bbb       12     123    345
2       ccc       ddd       23     432    543

В настоящее время, когда я поворачиваюсь, остаются только столбцы в «FieldTitle» и «Value», в то время как все статические столбцы удаляются.

pivoted_df = pd.pivot_table (df, index = 'Id', столбцы = 'FieldTitle', значения = 'Value', aggfunc = 'first'). Reset_index ()

У меня естьтакже пробовал ниже, но безуспешно:

pivoted_df = pd.pivot_table(df, index='Id', columns='FieldTitle', values=['Value'], aggfunc='first').reset_index()

1 Ответ

0 голосов
/ 26 сентября 2018

Вы можете передать список имен столбцов параметру index:

pivoted_df = pd.pivot_table(df, index=['id','UID','number','XID'], 
                                columns='FieldTitle', 
                                values='Value', 
                                aggfunc='first').reset_index()
print (pivoted_df)
FieldTitle  id  UID  number  XID fname lname
0            1   12     123  345   aaa   bbb
1            2   23     432  543   ccc   ddd

Если хотите динамически добавлять значения к параметру index:

cols = df.columns.difference(['FieldTitle','Value']).tolist()

pivoted_df = pd.pivot_table(df, index=cols, 
                                columns='FieldTitle', 
                                values='Value', 
                                aggfunc='first').reset_index()
print (pivoted_df)
...