Saya memiliki kerangka data df1
pid stat h1 h2 h3 h4 h5 h6 ... h20
1 a 3.2 3.5 6.2 7.1 1.2 2.3 ... 3.2
1 b 3.3 1.5 4.2 7.7 4.2 3.5 ... 8.4
1 a 3.1 3.8 2.2 1.1 6.2 5.3 ... 9.2
1 b 3.7 1.2 8.2 4.7 3.2 8.5 ... 2.4
: : : : : : : : : :
2 a 2.2 3.8 6.2 7.3 1.3 4.3 ... 3.2
2 b 4.3 1.3 4.2 5.7 2.2 3.1 ... 2.4
2 a 2.1 3.7 2.4 1.6 6.4 9.3 ... 9.6
2 b 3.8 1.3 8.7 3.7 7.2 8.3 ... 9.4
: : : : : : : : : :
3 a 2.2 3.8 6.2 7.3 1.3 4.3 ... 3.2
3 b 4.3 1.3 4.2 5.7 2.2 3.1 ... 2.4
3 a 2.1 3.7 2.4 1.6 6.4 9.3 ... 9.6
3 b 3.8 1.3 8.7 3.7 7.2 8.3 ... 9.4
: : : : : : : : : :
Saya ingin mendapatkan grup yang diindeks pada pid
dan stat
dan kemudian mengurangi h
nilai grup1 dari h
nilai grup2 untuk dataframe
(df2
) akhir. Kerangka data akhir ini perlu diindeks ulang dengan angka mulai dari 0:len(groups)
Ulangi secara berulang untuk semua permutasi pid seperti 1-2, 1-3, 1-4, 2-1, 2-3 ... dll. Saya perlu melakukan yang lain perhitungan pada kerangka data akhir df2
(nilai di bawah df2
tidak dikurangi secara eksak, tetapi hanya representasi)
pid(string) stat h1p1-h1p2 h2p1-h2p2 h3p1-h3p2 h4p1-h4p2 h5p1-h5p2 h6p1-h6p2 ... h20p1-h2p2
1-2 a 3.2 3.5 6.2 7.1 1.2 2.3 ... 3.2
1-2 b 3.3 1.5 4.2 7.7 4.2 3.5 ... 8.4
1-2 a 3.1 3.8 2.2 1.1 6.2 5.3 ... 9.2
1-2 b 3.7 1.2 8.2 4.7 3.2 8.5 ... 2.4
1-3 ....
Saya melihat pilihan;
for (pid, stat), group in df1.groupby(['pid', 'stat']):
print('pid = %s Stat = %s' %(pid, stat))
print group
ini memberi saya grup tetapi, saya tidak yakin bagaimana cara mengakses kerangka data dari loop for ini dan menggunakannya untuk mengurangi dari grup lain. Juga
df_grouped = df.groupby(['pid', 'stat']).groups()
masih tidak yakin bagaimana cara mengakses kerangka data grup baru dan melakukan operasi. Saya ingin tahu, apakah ini bisa dilakukan menggunakan groupby atau apakah ada pendekatan yang lebih baik. Terima kasih sebelumnya!