読み込んだデータセットがあります:
import pandas as pd
data = pd.read_excel('.../data.xlsx')
コンテンツは次のようになります。
Out[57]:
Block Concentration Name value
1 100 GlcNAc2 321
1 100 GlcNAc2 139
1 100 GlcNAc2 202
1 33 GlcNAc2 86
1 33 GlcNAc2 194
1 33 GlcNAc2 452
1 100 BCC 345
1 100 BCC 6
1 100 BCC 34
1 33 BCC 11
1 33 BCC 53
1 33 BCC 87
1 0 Print buffer 127
1 0 Print buffer 55
1 0 Print buffer 67
... ... ... ... ... ...
24 0 Print buffer -9968
24 0 Print buffer -4526
24 0 Print buffer 14246
ブロックと名前ごとに、3つの「0」濃度を追加し、そのブロックからの3つの「印刷バッファー」値をそれらの3つの新しい「0」濃度に追加します。
Out[57]:
Block Concentration Name value
1 0 GlcNAc2 127
1 0 GlcNAc2 55
1 0 GlcNAc2 67
1 100 GlcNAc2 321
1 100 GlcNAc2 139
1 100 GlcNAc2 202
1 33 GlcNAc2 86
1 33 GlcNAc2 194
1 33 GlcNAc2 452
1 0 BCC 127
1 0 BCC 55
1 0 BCC 67
1 100 BCC 345
1 100 BCC 6
1 100 BCC 34
1 33 BCC 11
1 33 BCC 53
1 33 BCC 87
1 0 Print buffer 127
1 0 Print buffer 55
1 0 Print buffer 67
... ... ... .........。
24 0 Print buffer -9968
24 0 Print buffer -4526
24 0 Print buffer 14246
3 'プリントバッファ'の平均を計算し、同じブロックのすべての値でそれを減算します。
必要な出力:
Out[57]:
Block Concentration Name value newvalue
1 0 GlcNAc2 127 127-mean(127+55+67)
1 0 GlcNAc2 55 55 -mean(127+55+67)
1 0 GlcNAc2 67 67-mean(127+55+67)
1 100 GlcNAc2 321 321-mean(127+55+67)
1 100 GlcNAc2 139 139-mean(127+55+67)
1 100 GlcNAc2 202 ....
1 33 GlcNAc2 86
1 33 GlcNAc2 194
1 33 GlcNAc2 452
1 0 BCC 127
1 0 BCC 55
1 0 BCC 67
1 100 BCC 345
1 100 BCC 6
1 100 BCC 34
1 33 BCC 11
1 33 BCC 53
1 33 BCC 87
1 0 Print buffer 127
1 0 Print buffer 55
1 0 Print buffer 67
... ... ... ... ... ...
24 0 Print buffer -9968
24 0 Print buffer -4526
24 0 Print buffer 14246
for each block
for each Name
add concentration '0' three times
append the three values of 'print buffer' to the three '0' concentrations
newvalue = value - average(three print buffer)
groupby適用関数をデータセットに使用することを検討してください。最初の関数は、を使用して「Print Buffer」の値のみを平均し、他の値mean()
はブロックゼロのままにします。そして、2番目の関数はを最大化しmeanvalue
ます。最後に、単純にnewvalue
算術差分として作成します。
def add_mean_value(mgrp):
mgrp['meanvalue'] = mgrp[mgrp['Name'] == 'Print buffer']['value'].mean()
return mgrp
data = data.groupby(['Block', 'Concentration', 'Name']).apply(add_mean_value)
def max_sum_value(mgrp):
mgrp['meanvalue'] = mgrp['meanvalue'].max()
return mgrp
data = data.groupby(['Block']).apply(max_sum_value)
data['newvalue'] = data['value'] - data['meanvalue']
print(data)
出力
Block Concentration Name value meanvalue newvalue
0 1 100 GlcNAc2 321 83 238
1 1 100 GlcNAc2 139 83 56
2 1 100 GlcNAc2 202 83 119
3 1 33 GlcNAc2 86 83 3
4 1 33 GlcNAc2 194 83 111
5 1 33 GlcNAc2 452 83 369
6 1 100 BCC 345 83 262
7 1 100 BCC 6 83 -77
8 1 100 BCC 34 83 -49
9 1 33 BCC 11 83 -72
10 1 33 BCC 53 83 -30
11 1 33 BCC 87 83 4
12 1 0 Print buffer 127 83 44
13 1 0 Print buffer 55 83 -28
14 1 0 Print buffer 67 83 -16
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加