Панды сводной таблицы данных при удалении индекса дубликаты


Цель моего кода, чтобы вращение панды фрейма данных, которая показана ниже. Идея заключается в использовании Individual столбец как столбец идентификаторов и VAF столбец значений. Я хотел бы объединить данные таким образом, что значения из столбцов Loc, Change, Chrom используются в качестве нового индекса. Для этого я сделал две новые колонки, newindexи uniques для того, чтобы удалить дубликаты, а затем поворот.

Оригинальные Таблицы Данных:

  Chrom        Loc WT Var Change ConvChange  AO     DP          VAF IntEx  \
0  chr1  115227855  T   A    T>A        T>A   5  19346  0.000258451  TIII   
1  chr1  115227855  T   C    T>C        T>C   4  19346  0.000206761  TIII   
2  chr1  115227856  C   T    C>T        C>T  14  19377  0.000722506  TIII   
3  chr1  115227857  C   A    C>A        C>A   3  19377  0.000154823  TIII   
4  chr1  115227857  C   T    C>T        C>T  15  19377  0.000774114  TIII   

    Gene Upstream Downstream Individual          newindex             uniques  
0  TIIIa        T          C          1  115227855T>Achr1  115227855T>Achr1_1  
1  TIIIa        T          C          1  115227855T>Cchr1  115227855T>Cchr1_1  
2  TIIIa        T          C          1  115227856C>Tchr1  115227856C>Tchr1_1  
3  TIIIa        C          A          1  115227857C>Achr1  115227857C>Achr1_1  
4  TIIIa        C          A          1  115227857C>Tchr1  115227857C>Tchr1_1

Код:

x = x.set_index(['uniques'])
x = x[~x.index.duplicated(keep='first')]
x = x.pivot(index='newindex', columns='Individual', values='VAF')

Так в приведенном выше коде я поставил новый индекс, который использует uniques столбец, который является таким же, как newindex столбец а значениями от Individual дописывается. Затем удалите повторяющиеся индексы, и, наконец, стержень в окончательной форме, приведенной ниже.

Individual                  1            2            3            4  \
newindex                                                               
106155152T>Achr4  0.000120685  0.000383835  0.000383224  0.000136617   
106155152T>Cchr4  0.000603427  0.000575753  0.000694594  0.000461081   
106155152T>Gchr4         None         None  0.000143709  6.83083e-05   
106155153G>Achr4         None  0.000355969  0.000239257  0.000392398   
106155153G>Tchr4         None  5.47645e-05         None  3.41215e-05   

Individual                  5            6            7  
newindex                                                 
106155152T>Achr4  0.000403506  0.000443759  0.000477926  
106155152T>Cchr4  0.000560425  0.000570547   0.00155326  
106155152T>Gchr4         None  8.45255e-05         None  
106155153G>Achr4  0.000179127  0.000274534  0.000298436  
106155153G>Tchr4  6.71727e-05         None         None

Чтобы уточнить, я предполагаю, что есть гораздо более эффективный способ создания новых индексов, которые не содержат дубликатов, чем делает newindex и uniques колонки, как я делаю.



417
3
задан 13 февраля 2018 в 12:02 Источник Поделиться
Комментарии
1 ответ

Я бы использовал встроенный drop_duplicates() функциональность.

x.drop_duplicates(['Loc', 'Change', 'Chrom'], keep='first', inplace=True)
x = x.pivot(index='newindex', columns='Individual', values='VAF')

4
ответ дан 16 февраля 2018 в 03:02 Источник Поделиться