でユニークな値を持つデータフレームの列を変換:私はM1、M2、M3の平均Mと価値のLogRatioをCalculがする新しい列を追加したい私は、次のデータフレーム持っているパンダ
datas = [['RAC1','CD0287',1.52,1.40,1.45,1.51], ['RAC1','CD0695',2.08,1.40,1.45,1.51], ['RAC1','ADN103-1',2.01,1.40,1.45,1.51], ['RAC3','CD0258',1.91,1.38,1.43,1.45], ['RAC3','ADN103-3',1.66,1.38,1.43,1.45], ['RAC8','CD0558',1.32,1.42,1.48,1.53], ['RAC8','ADN103-8',2.89,1.42,1.48,1.53]]
labels = ['Plate', 'Sample', 'LogRatio', 'm1', 'm2', 'm3']
df = pd.DataFrame(data = datas, columns=labels)
Plate Sample LogRatio m1 m2 m3
RAC1 CD0287 1.52 1.40 1.45 1.51
RAC1 CD0695 2.08 1.40 1.45 1.51
RAC1 ADN103-1 2.01 1.40 1.45 1.51
RAC3 CD0258 1.91 1.38 1.43 1.45
RAC3 ADN103-3 1.66 1.38 1.43 1.45
RAC8 CD0558 1.32 1.42 1.48 1.53
RAC8 ADN103-8 2.89 1.42 1.48 1.53
をADN103しかし、私は値をプレートで追加する方法を知らない。私が欲しいもの がある:私のデータフレームの最初の行のための例えば
df['M'] = (df['m1'] + df['m2'] + df['m3'] + LogRatio_ADN103_of_the_plate)/4
、Calculがは次のとおりです。
df['M'] = (1.40 + 1.45 + 1.51 + 2.01)/4
Plate Sample LogRatio m1 m2 m3 M
RAC1 CD0287 1.52 1.40 1.45 1.51 1,5925
RAC1 CD0695 2.08 1.40 1.45 1.51
RAC1 ADN103-1 2.01 1.40 1.45 1.51
RAC3 CD0258 1.91 1.38 1.43 1.45
RAC3 ADN103-3 1.66 1.38 1.43 1.45
RAC8 CD0558 1.32 1.42 1.48 1.53
RAC8 ADN103-8 2.89 1.42 1.48 1.53
2.01は、プレートRAC1にADN103のLogRatio値ですので。 私はすべてのプレートのためのADN103値を取得する方法を知っている:
expreg = "ADN103_RAC."
ADN103 = df[df['Sample'].str.contains(expreg, regex=True)]
logRatio_ADN103 = ADN103['Log Ratio']
私はADN103値を選択して、新規の列に変換を試みたが、私は彼らのLogRatio値を得ることができない、それだけでブール
をretrundf['ADN103oftheplate'] = df.groupby('Plate')['Sample'].transform(lambda x: x.str.contains(expreg, regex=True))
明らかかどうかわかりません。私はいろいろなやり方を試みて、今は完全に失われています。
ありがとうございました。
あなたは、元のデータフレームを作成する実際のコードが含まれている場合、それは数字だけをコピーして貼り付けるよりも良いだろう。それは他の人がより簡単に作業できるようにします。 – Alex
私のデータフレームは実際に私が読んだCSVファイルから来ていて、それは小さいものではありませんが、私の例では同じデータフレームを持つコードを作成しました。アドバイスをいただきありがとうございます。 – Elysire