对dataframe中的特定行执行计算,并使用结果执行附加计算

2024-03-29 10:04:14 发布

您现在位置:Python中文网/ 问答频道 /正文

下面提供了一个示例表(实际上,该表将包含针对给定受试者的更多实验、更多样本和不同数量的复制品):

SujectID    Experiment    Sample    Results
A               1          neg         1
A               1          neg         2
A               1          test-a      123
A               1          test-a      144
A               1          test-b      43
A               1          test-b      54
B               1          neg         42
B               1          neg         45
B               1          test-a      45
B               1          test-a      54

我需要计算一个给定的实验,对于一个给定的主题,否定的平均值。然后我要从每个测试的平均值中减去这个,然后再做这个实验。我想在dataframe中创建一个新的列,其中每个复制都会得到计算结果。你知道吗

现在,表的前六行如下所示:

SujectID    Experiment    Sample    Results    Adjusted
A               1          neg         1          0
A               1          neg         2          0
A               1          test-a      123        132
A               1          test-a      144        132
A               1          test-b      43         47
A               1          test-b      54         47

我可以使用“groupby”和“mean”来完成一些操作,但是我不确定如何将这些值解压回这个表中。你知道吗

dataframe.groupby(['SubjectId', 'Experiment', 'Sample']).mean()

我也可以用python字典来做这件事,但这似乎适合熊猫,因为我有一张大桌子。你知道吗


Tags: sampletest示例dataframe主题数量meanresults
1条回答
网友
1楼 · 发布于 2024-03-29 10:04:14

一种方法是在执行groupby之前,将数据帧过滤为负样本,然后使用merge将其与较大的帧合并

neg_sample = df['Sample'] == 'neg'
neg_means = df[neg_sample].groupby(['SujectID', 'Experiment']).mean()
neg_means.columns = ['Adj']

df = df.merge(neg_means, how='left', left_on=['SujectID','Experiment'], right_index=True)
df['Adjusted'] = df['Results'] - df['Adj']

相关问题 更多 >